2010-03-21 3 views
5

(페이지의 다른 IFRAMES 때문에) document.domain을 선언해야하는 페이지에 CodeMirror (http://marijn.haverbeke.nl/codemirror/)를 구현하고 있습니다.동적으로 생성 된 IFRAME에 대해 document.domain을 설정하는 방법은 무엇입니까?

CodeMirror는 구문 강조 표시된 코드 편집을 제공하는 동적 IFRAME을 생성합니다.

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

그것은 IE 부모 IE에서 document.domain을 상속하지 않습니다 밝혀 : 문제는 IE 코드 미러 다음 코드 조각을 (다른 브라우저는 괜찮) '액세스 거부'던졌습니다 것입니다. IFRAME 내용에 document.domain을 설정할 수 있지만 내용을 설정하기 전에 IE가 오류를 발생시킵니다. 어떤 아이디어이 문제를 해결하는 방법?

+0

비슷한 문제가 여기에서 논의되었지만 해결 방법은 나를 위해 작동하지 않습니다. http://www.telerik.com/community/forums/aspnet-ajax/editor/document-domain-access-denied-in-ie -6.aspx –

+1

죄송하지만 다른 [답변] [1]에서 CodeMirror_boilerplate 객체는 무엇입니까? 사업부? iframe? 뭐? [1] : http : //stackoverflow.com/questions/2486901/how-to-set-document-domain-for-a-dynamically-generated-iframe/2487023#2487023 – JwJosefy

답변

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;

IT는 SRC에 document.domain을하지 DOM으로 설정한다.

관련 문제