2013-09-24 94 views
25

我想爲特定頁面添加<meta http-equiv="X-UA-Compatible" content="IE=edge">如何在javascript中添加元標記

但我的頁面呈現在一個HTML標記內。點擊不同的模板後,只有內容發生變化。所以我不能在<HEAD>部分添加<meta>

有什麼方法可以使用javascript來添加<meta http-equiv="X-UA-Compatible" content="IE=edge">

+0

你不能做的meta標籤使用JavaScript。您可以將標記添加到模板,也可以從HTTP服務器設置標題。 – Pointy

+0

我相信這已經在這裏找到答案: http://stackoverflow.com/questions/7063863/adding-a-meta-tag-via-jquery –

+0

@Dontfeedthecode我嚴重懷疑,這個問題的答案實際工作。 – Pointy

回答

33

您可以添加:

var meta = document.createElement('meta'); 
meta.httpEquiv = "X-UA-Compatible"; 
meta.content = "IE=edge"; 
document.getElementsByTagName('head')[0].appendChild(meta); 

...但我不會感到驚訝,如果跑的時候,瀏覽器已經作出了有關如何渲染頁面的決定。

這裏真正的答案必須是首先從服務器輸出正確的標記,或者(當然)不要在X-UA兼容的情況下回復。

+3

我可以確認動態添加元標記在IE8中不起作用。 – plalx

+0

我已經能夠通過用'document.write'替換整個文檔內容來強制*怪癖*而不是* IE 7標準*。也許有一種方法可以在IE8中創建一個新的文檔對象,並用新的文檔替換當前的文檔,希望能夠重新評估文檔模式。 'createDocument'函數在IE8中不可用,但我想我們可以依靠一個'iframe'來創建一個新的文檔實例。 – plalx

+0

IE吮吸。在IE中沒有使用這個,因爲一旦頁面呈現開始,n指定了東西或者存在衝突IE採取支持死者即IE7的立場。 – sampopes

3

是否這樣?

<script> 
var meta = document.createElement('meta'); 
meta.setAttribute('http-equiv', 'X-UA-Compatible'); 
meta.setAttribute('content', 'IE=Edge'); 
document.getElementsByTagName('head')[0].appendChild(meta); 
</script> 
+1

你不需要'setAttribute','httpEquiv'和'content'都是[反映](http://www.w3.org/TR/html5/document-metadata.html#the-meta-element )。 –

+0

抱歉Paul Rad,它不工作。 –

13

$('head').append('<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> ');

var meta = document.createElement('meta'); 
meta.httpEquiv = "X-UA-Compatible"; 
meta.content = "IE=edge"; 
document.getElementsByTagName('head')[0].appendChild(meta); 

雖然我不能肯定它會在頁面加載

後,如果您想要的影響,因爲它會產生爲頁面描述添加元數據標籤,使用您的DNN頁面的設置 添加描述和d關鍵字。除了 ,修改HEAD的最佳方式是動態地將代碼通過第三方模塊注入到HEAD中。

http://www.dotnetnuke.com/Resources/Forums/forumid/7/threadid/298385/scope/posts.aspx

發現這個可以允許其他meta標籤,如果你運氣好

附加HEAD標籤可以放置到頁面設置>高級 設置>頁眉標籤。

找到在http://www.dotnetnuke.com/Resources/Forums/forumid/-1/postid/223250/scope/posts.aspx

+0

Yussuf,我已經嘗試了您提供的解決方案,但這些都不起作用。 –