3

是否可以使用jQuery修改X-UA兼容的元標記?我目前正在研究通過iFrame嵌入到另一個頁面的頁面。父文檔當前將X-UA兼容標籤設置爲邊緣,這完全破壞了我的邊框。我希望以某種方式強制父文檔重新加載頁面,但應用IE8標準。使用jQuery修改與X-UA兼容的元標記

現在我打電話

$("meta[name=X-UA-Compatible]", top.document).attr('content', 'IE=8'); 

它不能正常工作。我開始認爲這是不可能的,因爲即使在我正在工作的框架內,我也無法改變這個屬性,從而顯着改變IE9解析它的方式。

我正在查看此圖表:http://i.stack.imgur.com/e5gPv.png而且看起來我只能將幀切換爲Quirks或IE9,這非常不方便。有沒有人有任何想法?也許有一個ajax解決方案,我根本沒有看到..

回答

1

在您的代碼行中,「[name = X-UA-Compatible」後缺少括號。
這可能是問題嗎?

另外,你沒有控制首頁的代碼,它是在同一個域?

+0

不,這不是問題,但我很欣賞這種關注。我的實際代碼格式更正確。 它是相同的域,但我們沒有直接控制首頁上的代碼。還有, $('meta [name = X-UA-Compatible]')。attr('content','IE = 8'); 也不起作用,即使在框架本身之外。我開始思考一旦IE瀏覽器處理DOM,宇宙中的任何javascript都不會改變文檔模式...... –

+0

這實際上很有可能,因爲IE在奇怪模式下運行時實際上使用了完全不同的JS實現。你有沒有嘗試改變document.doctype? (IIRC,你可以通過doctype改變IE模式,而不僅僅是元標記) – Lusitanian

+0

Nevermind ...這是一個只讀屬性。不過,從我讀的內容來看,IE會將iframe完全與父級分開呈現,因此您應該能夠在iframe中設置元標記。 – Lusitanian

2

所以,我終於想通了這一點,這是一個需要被放置在你的框架HTML,如果你需要重新加載框架代碼..

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
if($('meta[http-equiv=X-UA-Compatible]', top.document).attr('content')!='IE=8') 
{ 
//alert('adjusting IE compatibility'); 
$('meta[http-equiv="X-UA-Compatible"]', top.document).attr('content', 'IE=8'); 
$('meta[http-equiv="X-UA-Compatible"]').attr('content', 'IE=8'); 
$('#FRAMEID',window.parent.document).attr('src',$('#FRAMEID',window.parent.document).attr('src')); 
} 
</script> 

它仍在進行測試,以確認解析器合法改變,但現在這是我們得到的最好的快速解決方案。