IE11 quirks mode under Iframe - javascript errors

I am reading and looking for answer for days and couldn't found one, hopefully this thread will bring salvation :)

In my company we have a web app that is working on IE8. We are trying to migrate to IE11. We almost there but, We have an old module that is written in an old framework that is hosted in an iframe and running in quirks mode(define with meta http-equiv="X-UA-Compatible" content="IE=emulate7" or IE=5, I tried both). As long as the parent/main window is rendered in IE8 document mode (via x-ua-compatible meta tag) or in enterprise mode, the iframe works fine.

But as soon as I change the parent/main window to IE=9 and above, I get javascript errors from the child iframe (more than I can handle).

I understand that IE11 uses emulator for quirks mode and not the real engine, but I can not find anywhere details about the javascript engine. Does this mean that if the parent main window is rendered is IE9 and above, the child iframe will use ECMAscript 5 and not jscript as it should?

is there any solution to my problem? thanks guys!

Answers:

Answer

Starting with IE10, the child mode can be different from the parent.

See this link. It says...

IE9 mode displays the child frame in standards mode (because the parent document is in standards mode). Starting with Internet Explorer 10, however, child frames can emulate quirks mode. For more info, see IEBlog: HTML5 Quirks mode in IE10. For best results, however, use document modes consistently.

Answer

Starting with IE9, frames were limited to the document of the parent document, e.g. if the parent document rendered in standards mode, child frames were forced to render likewise.

Perhaps one approach would be to revise things so that your IE9+ window presents links to open your legacy app in a new parent window, one that presents whatever document mode your child frame requires.

You can use showModelessWindow to open a child window containing a separate HTML file, one that initiates the correct document mode in the parent document...and then loads the IFRAME you're working with. Example code:

var sOptions = "scroll: no; status: no; resizable: yes;";
window.showModelessDialog("myFrameContainer.html", "", sOptions );

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.