0

私はこの問題の答えを探してインターネットを調べましたが、残念ながら、私は助けを求めることを余儀なくされています。

リッチテキスト/HTML編集機能にcleditorjQueryプラグインを使用しています。ほとんどの場合、正常に動作します。ただし、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プラグイン、InternetExplorerの組み合わせだと思います。

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 に答える