Как установить document.domain для динамически генерируемого IFRAME? - PullRequest
5 голосов
/ 21 марта 2010

Я реализую CodeMirror (http://marijn.haverbeke.nl/codemirror/) на странице, где необходимо объявить document.domain (из-за других IFRAMES на странице).

CodeMirror генерирует динамическое IFRAME для обеспечения синтаксиса выделенного редактирования кода. Проблема в том, что IE выдает «Отказано в доступе» (другие браузеры в порядке) в следующем фрагменте кода зеркального отображения:

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

Оказывается, IE не наследует document.domain от родительского IE. Я могу установить document.domain в содержимом IFRAME, но IE выдает ошибку еще до того, как я могу установить содержимое. Есть идеи, как решить эту проблему?

1 Ответ

9 голосов
/ 21 марта 2010

Получилось, наконец, работать. Взлом, вдохновленный кодом 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;

Он устанавливает document.domain в SRC, а не в DOM.

...