6

document.domain を宣言する必要があるページにCodeMirror ( http://marijn.haverbeke.nl/codemirror/ ) を実装しています (ページ上の他の IFRAMES のため)。

CodeMirror は動的 IFRAME を生成して、構文が強調表示されたコード編集を提供します。問題は、次のコード ミラー コードで IE が「アクセスが拒否されました」(他のブラウザは問題ありません) をスローすることです。

this.win = frame.contentWindow;
...
var doc = this.win.document; <-- ERROR
doc.open();
doc.write(html.join(""));
doc.close();

IE は親 IE から document.domain を継承していないことがわかりました。IFRAME コンテンツに document.domain を設定できますが、コンテンツを設定する前に IE でエラーが発生します。この問題に取り組む方法はありますか?

4

1 に答える 1

9

ついに動作するようになりました。TinyMCE コードに触発されたハック。

var u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.CodeMirror_boilerplate;document.write(ed);document.close();})()';

frame.src = u;

DOM ではなく SRC で document.domain を設定します。

于 2010-03-21T12:19:14.310 に答える