在Internet Explorer 9中使用cleditor会导致双引号被错误地转义

时间:2013-03-20 22:13:13

标签: internet-explorer internet-explorer-9 cleditor

我在互联网上寻找这个问题的答案,但是,唉,我被迫寻求帮助。

我使用cleditor jQuery插件进行Rich Text / HTML编辑功能。在大多数情况下,它工作正常。但是,如果我在IE9中执行以下操作,则会出现一个奇怪的问题:

  1. 点击工具栏右上角的“显示来源”按钮切换到HTML模式
  2. 粘贴以下代码段:

    <p>Note the double-quotes</p>
    <div onclick='alert("hi")'>click me</div>
    
  3. 切换回富文本模式并进行微不足道的更改(例如,添加空格)

  4. 再次切换到HTML模式
  5. 请注意双引号现在如何错误地转义如下:

    <div onclick="alert(\"hi\")">click me</div>
    

    这到底是怎么回事?其他浏览器正确地逃避双引号:

    <div onclick="alert(&quot;hi&quot;)">click me</div>
    

    我试图使用实体&quot;,我自己但没关系 - IE9仍然让它变得混乱。有谁知道如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

没关系,我明白了。如果其他人正在努力解决这个问题,我认为这是使用cleditor,XHTML插件和Internet Explorer的组合。

您可以通过在您的主编代码之前添加此JavaScript代码段来解决此问题:

(function ($) {
    var oldCallback = $.cleditor.defaultOptions.updateTextArea;

    $.cleditor.defaultOptions.updateTextArea = function (html) {
        if (oldCallback) {
            html = oldCallback(html);
        }

        var isIE = /*@cc_on!@*/false;
        if (isIE) {
            return html.replace(/\\\"/g, "&quot;");
        } else {
            return html;
        }
    };
})(jQuery);

或者,您可以在jquery.cleditor.js中进行条件替换(第1126行为cleditor v1.3.0)。