2014-10-05 40 views
1

我讀,並尋找答案了幾天,也沒有找到,希望這線程將帶來拯救:)IE11怪癖的iFrame模式下 - JavaScript錯誤

在我的公司,我們有正在一個web應用程序在IE8上。 我們正在嘗試遷移到IE11。 我們幾乎在那裏,但是, 我們有一箇舊模塊,寫在一箇舊框架,託管在一個iframe中,並以怪癖模式運行(用meta http-equiv =「X-UA兼容」content =「IE = emulate7「或IE = 5,我都試過)。 只要父/主窗口以IE8文檔模式(通過x-ua兼容元標記)呈現或在企業模式下呈現,iframe就能正常工作。

但是,只要我將父/主窗口更改爲IE = 9及以上版本,就會從子iframe中獲取javascript錯誤(超過我可以處理的數量)。

據我所知,IE11使用仿真器的怪癖模式,而不是真正的引擎,但我找不到任何關於JavaScript引擎的任何細節。 這是否意味着如果父級主窗口呈現的是IE9及以上版本,子iframe將使用ECMAscript 5而不是jscript?

有沒有解決我的問題? 謝謝你們!

回答

1

從IE9開始,幀被限制在母文檔的文檔中,例如,如果父文檔在標準模式下呈現,則子框架也被強制呈現。

也許一種方法是修改東西,以便IE9 +窗口在新的父窗口中顯示鏈接以打開您的遺留應用程序,該窗口呈現您的子框架需要的任何文檔模式。

您可以使用showModelessWindow打開包含單獨HTML文件的子窗口,該窗口在父文檔中啓動正確的文檔模式,然後加載您正在使用的IFRAME。示例代碼:

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

與IE10開始,子模式可以從父不同

See this link.它說...

IE9模式顯示標準模式下的子幀(因爲 父文檔是標準模式)。但是,從Internet Explorer 10開始,子框架可以模擬怪異模式。有關更多信息,請參閱IE10中的 IEBlog: HTML5 Quirks模式。但是,爲獲得最佳效果,請始終使用 文檔模式。