javascript - 替换/限制 CKEDITOR 中的非标准字符

标签 javascript ckeditor

我有一个 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的情况下解决这个问题的过程

  1. 下载并打开 ckeditor.js 文件的未压缩版本。
  2. 找到整个 CKEDITOR.htmlParser.basicWriter 函数并将其复制到 config.js 文件的底部。这基本上重新定义了该功能,覆盖了真实的功能,但允许我们对其进行自定义,而不必破坏 future 的更新。
  3. 在 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/

相关文章:

php - 如果我们希望先执行 javascript 然后执行 php post 方法(即提交)该怎么办

javascript - 读取粘贴的数据 onBeforePaste 或 onPaste

Angular 通用 + CkEditor5 : window is not defined

javascript - CKEDITOR 在销毁之前检查 Dirty

javascript - JQUERY如何选择项目

javascript - $stateChangeStart 的 Ionic/Angular 替代品

javascript - 仅替换数组的最后一项

javascript - 如何在 html 中创建这些可拖动设置栏之一?

javascript - 如何以编程方式查询 CKEDITOR 内容?

javascript - 有比 document.execCommand 更好的东西吗?