百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>建站知识> KindEditor4.1.3图片和链接属性中冒号被替换为%3A的问题如何解决
分享本文到:

KindEditor4.1.3图片和链接属性中冒号被替换为%3A的问题如何解决

发布时间:12/03 来源: 浏览: 关键词:

KindEditor4.1.3可能在链接地址的escape上出了点问题,发过的帖子再编辑时修改帖子中链接或图片的src时url中的:会被escape,变为%3A,虽然不影响编辑后的结果,但难免看起来会引起误会。

点击图片看大图

 

看了下KE的源码,发现问题出在beforeSetHtml方法中,下面是此方法代码:

self.beforeSetHtml(function(html) {
        return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig, function(full) {
            var attrs = _getAttrList(full);
            attrs.src = _undef(attrs.src, '');
            attrs.width = _undef(attrs.width, 0);
            attrs.height = _undef(attrs.height, 0);
            return _mediaImg(self.themesPath + 'common/blank.gif', attrs);
        })
        .replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig, function(full) {
            var attrs = _getAttrList(full);
            if (attrs.href !== undefined) {
                return full;
            }
            return '<img class="ke-anchor" src="' + self.themesPath + 'common/anchor.gif" data-ke-name="' + escape(attrs.name) + '" />';
        })
        .replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig, function(full, attr, code) {
            return '<div class="ke-script" data-ke-script-attr="' + escape(attr) + '">' + escape(code) + '</div>';
        })
        .replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig, function(full, attr, code) {
            return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(attr) + '">' + escape(code) + '</div>';
        })
        .replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig, function(full, start, key, src, end) {
            if (full.match(/\sdata-ke-src="[^"]*"/i)) {
                return full;
            }
            full = start + key + '="' + src + '"' + ' data-ke-src="' + escape(src) + '"' + end;
            return full;
        })
        .replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig, function(full, start, end) {
            return start + 'data-ke-' + end;
        })
        .replace(/<table[^>]*\s+border="0"[^>]*>/ig, function(full) {
            if (full.indexOf('ke-zeroborder') >= 0) {
                return full;
            }
            return _addClassToTag(full, 'ke-zeroborder');
        });
    });

问题是由下面这一行代码导致的,DEBUG了下,这里的escape是浏览器的native方法,而不是K.escape:

full = start + key + '="' + src + '"' + ' data-ke-src="' + escape(src) + '"' + end;

解决方法:

将escape(src)改为src或者_escape(src),魔酷阁上编辑器已更新。

责任编辑:

当前文章网址:http://www.baidow.com/jiaocheng/yunying/201612/362.html 转载请注明出处!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

订阅获得更多模板