3

I've got the following code which works fine in Firefox...

if (!iFrame) iFrame = outerDoc.getElementById('_dialog_iframe');
var iFrameDoc = iFrame.contentWindow.document; // get iframe doc

and the Chrome version...

if (!iFrame) iFrame = outerDoc.getElementById('_dialog_iframe');
var iFrameDoc = iFrame.document; // get iframe doc

I'm testing the code be getting iFrameDoc.body when I run the FireFox code in Firefox it works fine. However, the Chrome code returns undefined. Why? How do I fix this so that it'll work fine in Chrome?

Skizit
  • 43,506
  • 91
  • 209
  • 269

1 Answers1

11

If the iframe element has a document property in Chrome then I'm surprised, and it's non-standard and not supported in other browsers. The standards-based property is contentDocument, and to support other browsers you can use contentWindow.document. The following will work in all major browsers:

var iFrameDoc = iFrame.contentDocument || iFrame.contentWindow.document;
Tim Down
  • 318,141
  • 75
  • 454
  • 536
  • I had a similar issue, and your code works. What is weird is that removing the params "sandbox='allow-same-origin allow-scripts'" in the iframe it works fine anyway. – Omiod Apr 05 '12 at 13:57