0

我已经在互联网上搜索了这个问题的答案,但是,唉,我不得不寻求帮助。

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

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

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

  4. 再次切换到 HTML 模式

请注意双引号现在如何错误地转义,如下所示:

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

这到底是怎么回事?其他浏览器像这样正确地转义双引号:

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

我自己尝试过使用实体 , &quot;,但这没关系 - IE9 仍然把它搞砸了。有谁知道如何克服这个问题?

4

1 回答 1

0

没关系,我想通了。如果其他人正在为这个问题苦苦挣扎,我认为这是使用 cleditor、XHTML 插件和 Internet Explorer 的组合。

您可以通过在您的 cleditor 代码之前添加此 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 中进行条件替换(cleditor v1.3.0 的第 1126 行)。

于 2013-03-22T18:04:15.340 回答