2015-07-19 66 views
0

由于一个非常具体的要求,我需要防止CKEditor用URL中的引号重写链接。例如,如果我输入:我怎样才能防止CKEditor用引号括起URL?

<a href=TEST123>TEST123</a> 

的CKEditor其重写为:

<a href="TEST123">TEST123</a> 

目前,我有我的分布以下插件,虽然添加或移除不同的插件来满足这个要求不会是一个问题:

basicstyles, button, clipboard, dialog, dialogui, enterkey, 
entities, fakeobjects, floatingspace, indent, indentlist, 
link, list, resize, sourcearea, toolbar, undo, wysiwygarea 

在我得到关于演讲的想法,这是(你说教的合唱团在这里)的多么糟糕,知道这是一个非常特殊的implemen要求Keyora网络平台。我无能为力来解决这个需求,因为它已经被编译到别人的代码中了。不知何故,我只需要让它工作。有没有办法与CKEditor做到这一点?

谢谢!

+0

如果您将引号关闭,某些浏览器会将它们插入....您可以做的不多,以阻止它。只有我能想到的解决方案是在提交 – charlietfl

回答

2

我想出了如何做到这一点。关键是要在basicWriter功能(位于/ckeditor/core/htmlparser/basicwriter.js)小型定制复制到/config.js文件,并适用于它,像这样:

原始

CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ 

... 

this._.output.push(' ', attName, '="', attValue, '"'); 

... 

}); 

定制

CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ 

... 

if (attName == 'href') { 
    this._.output.push(' ', attName, '=', attValue, ''); 
    } else { 
    this._.output.push(' ', attName, '="', attValue, '"'); 
    } 

... 

}); 

这防止周围自动网址引号。再一次,这打破了CKEditor几乎所有对它有用的应用程序,所以我强烈建议不要在几乎的任何情况下这样做。

即使这是不好的做法,将它添加到config.js中,而不是自定义核心CKEditor代码本身至少可以让您轻松地回滚自定义。

+0

之前解析html字符串,以便更好地检查跨浏览器。我只是在Firefox中做了一个快速测试,它自动创建了引号(我没有使用CKEditor) – charlietfl

+0

我在最新版本的IE,Firefox和Chrome中测试了我的实现。除了浏览器中安装了某种插件之外,我不确定浏览器如何将引号添加到除实际解析器之外的输入字段中? – Typel

+0

授予我在jsfiddle中测试,当你运行代码时可能会在服务器上进行一些解析。浏览器解析DOM中的内容将成为CKEditor看到的内容 – charlietfl