替换/限制 CKEDITOR 中的非标准字符
Replace / restrict non-standard characters in CKEDITOR
我有一个CKEDITOR实例(版本4.5.7),用户可以在其中输入内容。此内容发布到带有排序规则SQL_Latin1_General_CP1_CI_AS
的数据库字段。
当用户从 Word 或类似的富文本编辑器粘贴文本时,就会出现问题。特别是两个字符在到达数据库时会格式不正确:” (”)
和 – (–)
。
我已经将config.entities
设置为 false
,以防止字符转换为其 HTML 等效项。现在我正在寻找一个可以拦截该过程以查找/替换任何违规角色的地方。虽然这种事情的javascript很容易(text = text.replace('”', '"')
),但我不确定把它放在哪里才能做到这一点。我尝试过将它放在 CKEDITOR.htmlParser.basicWriter 函数中的不同位置,但到目前为止没有任何效果。
这似乎是一个相当普遍的问题 - 是否有办法在编辑器上设置排序规则以使其与数据库匹配?
谢谢你的任何建议。
我一直
在基本的Writer函数中徘徊,直到最终我惊讶地发现一个真正有效的地方。基本上,这是我用来解决这个问题的过程,而无需编辑 ckeditor.js
- 下载并打开 ckeditor.js 文件的未压缩版本。
- 找到整个
CKEDITOR.htmlParser.basicWriter
函数并将其复制到 config.js 文件的底部。这基本上重新定义了功能,覆盖了真正的功能,但允许我们对它进行自定义,而不必破坏未来的更新。 - 在 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;
}
相关文章:
- 在List.js中使用非英语字符
- Javascript键代码捕获非拉丁字符?(还需要在selectize.js中工作)
- 忽略任何非小写字符(如数字、大写字母和符号)并获取k的值
- 在粘贴事件Javascript的输入字段中删除所有非数字字符
- 获取非标准模式中的子字符串
- 如何在 JavaScript 中获取非重复字符及其计数
- 如何从数组中过滤掉非日语字符
- .keyup() 上的非拉丁字符替换在快速键入时不起作用
- 如何检查字符串是否包含非英语字符列表
- 使用Javascript为select标记添加非标准属性
- 从nodejs-crypto返回的字符串中修剪非ascii字符
- JSON解析意外的非空白字符
- 替换不包括 unicode 的非数字字符
- 正则表达式 - 仅第一个字符检查非字母字符
- 在 angularjs 中适应非标准属性
- JavaScript 字符串中的转义控制和非 ASCII 字符(高位)
- 替换/限制 CKEDITOR 中的非标准字符
- 在JavaScript文件中使用非标准字符导致IE错误
- JavaScript:将字符转换为代码,或将字符串转换为二进制数组(数字数组)的非标准方法
- 不匹配特定非标准字符的十六进制或十进制代码的正则表达式