2012-03-29 131 views
5

我有一個需要兼容模式的框架,但是父框架似乎正在設置它,所以框架內的下面的標籤什麼也不做。使用javascript強制IE9進入兼容模式

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

有沒有辦法將compat模式應用於只有框架,或有框架將compat模式應用於父框架。

思考是否有一種javascript方法切換模式我可以將它應用到子框架的父框架。

+0

可惜的是無法做到的。在IE框架中始終使用父文檔的呈現模式。我假設由於您無法更改父文檔使其不在同一個域中,因此跨域邊界將阻止您從框架更改父文檔的呈現模式。 – pseudosavant 2012-03-30 20:25:11

+0

我在同一個域上,但這是一個很大的遺留應用程序,數千頁。在整個版本中簡單地設置兼容模式似乎是在IE7支持開始逐漸停止時尋求更多的麻煩。但是,如果我可以讓孩子在一頁上更改父母的文檔,那正是我想要的。在我的情況下,跨域邊界不是問題。 – Serhiy 2012-03-31 03:43:15

+0

如果打開iframe,則iframe將訪問opener以執行類似opener.set_XUA(「IE = EmulateIE7」)的操作。 要做到這一點,您可以使用open iframe的名稱作爲目標,因此它使用iframe來打開該頁面。 這可能比它應得的麻煩。 – Tei 2012-04-02 11:14:31

回答

2

所以這裏是我收集的。

似乎工作的唯一的東西是元標記的方式。

但是,由於IE9禁止了一個幀的類型不同於另一個類型,因此它在幀中不起作用。

元標記也不能由腳本或鏈接標記,只有和我注意到的其他元標記前面,否則它也會失敗。

測試用例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Test test</title> 
     <meta name="keywords" content="keywords, keyword, keyword phrase, etc."> 
     <!--<link href="test.css" rel="stylesheet" type="text/css" />--> 
     <!--<script type="text/javascript">alert('test');</script>--> 
     <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    </head> 
    <body> 
     inline-block <div style="display:inline-block">test</div> 
    </body> 
</html> 
1

從我的頭頂開始,您可以嘗試創建元標記並將其插入父框架頭。我不確定這是否會強制仿效。

var meta = document.createElement('meta'); 
meta.setAttribute('http-equiv', 'X-UA-Compatible'); 
meta.setAttribute('content', 'IE=EmulateIE7'); 

parent.document.getElementsByTagName('head')[0].appendChild(meta); 
+0

不幸的是這不起作用...... :( – Serhiy 2012-10-11 17:19:28