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

时间:2016-03-01 19:56:21

标签: javascript ckeditor

我有一个用户输入内容的CKEDITOR实例(版本4.5.7)。此内容将使用归类SQL_Latin1_General_CP1_CI_AS发布到数据库字段。

当用户从Word或类似的富文本编辑器粘贴文本时,问题就出现了。特别是两个字符在访问数据库时会出现格式错误:” (”)– (–)

我已将config.entities设置为false,以防止将字符转换为HTML等效字符。现在我正在寻找一个可以拦截进程来查找/替换任何违规字符的地方。虽然这类东西的javascript很容易(text = text.replace('”', '"')),但我不知道在哪里放置它以实现这一点。我已经尝试将它放在CKEDITOR.htmlParser.basicWriter函数中的不同位置,但到目前为止没有任何工作。

这似乎是一个相当常见的问题 - 是否有一种方法可以在编辑器上设置排序规则,使其与数据库匹配?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我一直在使用basicWriter函数,直到最后我惊讶地发现一个地方确实有效。基本上,这是我用来解决这个问题的过程而不编辑ckeditor.js

  1. 下载并打开ckeditor.js文件的未压缩版本。
  2. 找到并将整个CKEDITOR.htmlParser.basicWriter函数复制到config.js文件的底部。这基本上重新定义了该功能,覆盖了真正的功能,但允许我们对其进行自定义,而不必破坏未来的更新。
  3. 在config.js中复制的函数中,找到getHtml部分并在返回之前自定义html变量。以下是帮助您找到此部分的模板
  4. 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;
    }