3

私は WYSIWYG エディターに取り組んでいます。そして、私は次のようなコードを持っています:

doc.execCommand(cmd, false, null);

cmd引数は'Bold'、'Italic' などになります。doc変数は iframe 内のドキュメントを参照し、別の場所で初期化されます。

doc = iframe1.contentWindow.document; 

Chrome では正常に動作しますが、IE (私の場合は IE9) ではまったく動作しません。

開発者ツールを使用してコードをデバッグしましたが、何も問題はありませんでした。execCommand関数が機能しません。

インターネットで検索しましたが、利用可能な解決策が見つかりませんでした。

誰か助けてくれませんか?

コードサンプル:

function $see(e, o) {
    var that = this;
    ...
    this.e = $see.make('iframe', { 'class': 'editor' }); // editor iframe    
    this.e.onload = function () {  // call when the document is loaded
        var d = that.e.contentWindow || that.e.contentDocument;
        if (d.document) d = d.document;
        that.doc = d;
        that.doc.write('<html><head></head><body></body></html>');
        that.doc.body.innerHTML = that.ta.value; // that.ta refers to an textarea
        that.doc.body.setAttribute('contenteditable', 'true');
        ...
    };
}
$see.prototype.exec = function (cmd) { 
    // call in an <a> tag's onclick event outside the iframe
    this.doc.execCommand(cmd, false, null); 
};
4

1 に答える 1

3

これは、ブラウザごとに iframe を操作する方法が異なるためです。

これがどのように機能するかです

var doc= iframe1.contentWindow || iframe1.contentDocument;
if (doc.document)
 doc=doc.document;

アップデート

わかりました、ここで少し間違いを犯したと思います。次のようになります。

var doc = iframe.contentWindow || iframe.contentDocument.defaultView;
if (doc.document)
doc=doc.document;
于 2011-06-24T05:42:25.897 に答える