How to set document.domain for a dynamically generated IFRAME?

22,703

Got it to work, finally. A hack inspired by TinyMCE code.

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 sets the document.domain in SRC and not by DOM.

Share:
22,703
Paras Chopra
Author by

Paras Chopra

Updated on October 07, 2020

Comments

  • Paras Chopra
    Paras Chopra over 3 years

    I am implementing CodeMirror (http://marijn.haverbeke.nl/codemirror/) on a page where document.domain needs to be declared (because of other IFRAMES on the page).

    CodeMirror generates a dynamic IFRAME to provide syntax highlighted code editing. The problem is that IE throws up 'Access Denied' (other browsers are fine) at the following piece of code mirror code:

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

    It turns out IE doesn't inherit document.domain from parent IE. I can set document.domain in the IFRAME contents but IE throws up the error before I can even set the contents. Any ideas how to tackle this problem?