网站推广-网站优化-合肥久飞SEO论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7976|回复: 0

解决KindEditor4编辑器图片和链接属性中冒号被替换为%3A的问题

[复制链接]
发表于 2014-4-21 17:43:29 | 显示全部楼层 |阅读模式
KindEditor4.1.3可能在链接地址的escape上出了点问题,发过的帖子再编辑时修改帖子中链接或图片的src时url中的:会被escape,变为%3A,虽然不影响编辑后的结果,但难免看起来会引起误会。



看了下KE的源码,发现问题出在beforeSetHtml方法中,下面是此方法代码:
  1. self.beforeSetHtml(function(html) {
  2. return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig, function(full) {
  3. var attrs = _getAttrList(full);
  4. attrs.src = _undef(attrs.src, '');
  5. attrs.width = _undef(attrs.width, 0);
  6. attrs.height = _undef(attrs.height, 0);
  7. return _mediaImg(self.themesPath + 'common/blank.gif', attrs);
  8. })
  9. .replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig, function(full) {
  10. var attrs = _getAttrList(full);
  11. if (attrs.href !== undefined) {
  12. return full;
  13. }
  14. return '<img class="ke-anchor" src="' + self.themesPath + 'common/anchor.gif" data-ke-name="' + escape(attrs.name) + '" />';
  15. })
  16. .replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig, function(full, attr, code) {
  17. return '<div class="ke-script" data-ke-script-attr="' + escape(attr) + '">' + escape(code) + '</div>';
  18. })
  19. .replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig, function(full, attr, code) {
  20. return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(attr) + '">' + escape(code) + '</div>';
  21. })
  22. .replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig, function(full, start, key, src, end) {
  23. if (full.match(/\sdata-ke-src="[^"]*"/i)) {
  24. return full;
  25. }
  26. full = start + key + '="' + src + '"' + ' data-ke-src="' + escape(src) + '"' + end;
  27. return full;
  28. })
  29. .replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig, function(full, start, end) {
  30. return start + 'data-ke-' + end;
  31. })
  32. .replace(/<table[^>]*\s+border="0"[^>]*>/ig, function(full) {
  33. if (full.indexOf('ke-zeroborder') >= 0) {
  34. return full;
  35. }
  36. return _addClassToTag(full, 'ke-zeroborder');
  37. });
  38. });
复制代码

问题是由下面这一行代码导致的,DEBUG了下,这里的escape是浏览器的native方法,而不是K.escape:
full = start + key + '="' + src + '"' + ' data-ke-src="' + escape(src) + '"' + end;
解决方法:


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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

本文地址: https://jiufei.net/bbs/thread-11407-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|合肥网站优化,合肥百度优化,合肥网络推广,合肥SEO优化论坛 ( 皖ICP备2022014487号-2 )

GMT+8, 2025-1-31 11:17 , Processed in 0.059376 second(s), 19 queries , File On.

Powered by jiufei X3.4

© 2008-2020 www.jiufei.net

快速回复 返回顶部 返回列表