2010-03-21 84 views
5

我在需要聲明document.domain的頁面(由於頁面上的其他IFRAMES)實施CodeMirror(http://marijn.haverbeke.nl/codemirror/)。如何爲動態生成的IFRAME設置document.domain?

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甚至可以設置內容之前拋出錯誤。任何想法如何解決這個問題?

+0

此處已經討論了類似的問題,但解決方法對我無效http://www.telerik.com/community/forums/aspnet-ajax/editor/document-domain-access-denied-in-ie -6.aspx – 2010-03-21 11:57:04

+1

對不起,但是,其他[答案] [1]中的CodeMirror_boilerplate對象是什麼?一個div?一個iframe?什麼? [1]:HTTP://stackoverflow.com/questions/2486901/how-to-set-document-domain-for-a-dynamically-generated-iframe/2487023#2487023 – JwJosefy 2011-10-06 23:05:34

回答

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;

它設置在SRC的document.domain的,而不是由DOM。

相關問題