我有一个 CKEDITOR 实例(版本 4.5.7),用户可以在其中输入内容。此内容发布到具有排序规则 SQL_Latin1_General_CP1_CI_AS
的数据库字段。
当用户从 Word 或类似的富文本编辑器粘贴文本时,就会出现问题。特别是有两个字符在访问数据库时会出现格式错误:” (”)
和 – (–)
。
我已经将 config.entities
设置为 false
以防止字符转换为 HTML 等效项。现在我正在寻找一个可以拦截进程以查找/替换任何违规字符的地方。虽然这种事情的 javascript 很简单( text = text.replace('”', '"')
),但我不确定将其放在哪里才能实现这一点.我尝试将其放置在 CKEDITOR.htmlParser.basicWriter 函数内的各个位置,但到目前为止没有任何效果。
这似乎是一个相当常见的问题 - 是否有一种方法可以在编辑器上设置排序规则以使其与数据库匹配?
感谢您的建议。
最佳答案
我一直在 basicWriter 函数中投入精力,直到最终我惊讶地发现一个真正可以工作的地方。基本上,这就是我在不编辑ckeditor.js的情况下解决这个问题的过程
- 下载并打开 ckeditor.js 文件的未压缩版本。
- 找到整个
CKEDITOR.htmlParser.basicWriter
函数并将其复制到 config.js 文件的底部。这基本上重新定义了该功能,覆盖了真实的功能,但允许我们对其进行自定义,而不必破坏 future 的更新。 - 在 config.js 中复制的函数中,找到 getHtml 部分并在返回之前自定义
html
变量。下面是一个模板,可帮助您找到此部分
getHtml: function( reset ) {
var html = this._.output.join( '' );
// this is where we can replace individual characters or make other
// customizations
html = html.replace('”', '"');
html = html.replace('–', '-');
if ( reset )
this.reset();
return html;
}
关于javascript - 替换/限制 CKEDITOR 中的非标准字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35732240/