19

我有一個網頁的iframe和iframe中包含需要在怪癖模式下運行的代碼(這是微軟的Outlook Web Access的,所以它不是我們的代碼,我們可以解決反正)。 IE9引入了一個「功能」,當父框架處於IE9文檔模式時,它還強制任何內嵌框架進入相同的文檔模式。這打破了我們有一個iframe的代碼。強迫IE9進入怪異模式?

我希望這是IE9中的錯誤,但我的票被拒絕了爲「設計」(here is the ticket如果你注意看)

我不能運行在怪癖模式整個網站,但我需要它只發生在這個頁面上。有沒有辦法以編程方式打開怪異模式渲染?要麼是這樣,要麼就是模仿按下「兼容性視圖」按鈕的方法 - 按下此按鈕幾乎可以讓IE9進入IE8,這也很好。

是否有可能做這些事情?

回答

10

我有你的同樣的問題,並在2011年4月相當廣泛地研究它。到那時,唯一的方法是在「標準模式」下有一個頂級文檔並且在子級iframe中有一個文檔IE9中的「怪癖模式」是使用元標記來讓瀏覽器像IE8一樣運行。 (據我所知,這仍是如此和微軟無意去改變它。)有很多種,你可以用它來改變瀏覽器模式的meta標籤的,但我已經使用了一個已經工作了:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

如果你有這個元標記,所有的文件都應該根據自己的DOCTYPE能正確顯示(每IE8規則)。

但是請注意,這使你不能使用任何在IE9的新支持CSS功能,即使是在頂級文檔。你將無法使用border-radius,box-shadow,opacity等。

還有一些關於此問題的更多信息,在Will an iframe render in quirks mode?上,它提出了一個關於iframe和doctypes更常見的問題。

+1

是的,這是我們最終使用的解決方案。這有點蹩腳,但確實有效。 –

+0

恢復一個非常古老的線程,但這個元標記在頂級文檔的頭部,對嗎?我有一種類似的情況,我無法控制quirk-y iFrame中的內容,但完全控制頂層文檔。謝謝! – Rishi

-2

你應該能夠有不同的iframe和主機之間compat的模式 - 見:http://blogs.msdn.com/b/cjacks/archive/2010/12/01/does-a-standards-web-page-inside-of-an-iframe-in-a-quirks-web-page-render-in-standards-or-quirks.aspx

您可以指定要顯式的兼容模式,不是可以用按鈕甚至更多,使用X- UA兼容標籤:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

HTH。

+2

這就是要點。我*應該*能夠,但他們在IE9中改變了這一點。現在它強制父頁面的compat模式到任何子iframes。 –