簡體   English   中英

如何在Javascript中以編程方式打開IE9兼容性視圖

[英]How to turn on IE9 Compatibility View programmatically in Javascript

我需要以編程方式打開IE兼容性。

我知道這在C#中有效:

Page.Header.Controls.AddAt(0, new HtmlMeta { HttpEquiv = "X-UA-Compatible", Content = "IE=EmulateIE7" });

我的問題是我所有的窗口都顯示在JS函數中:例如:

function openRadWin(idAgir) {
    radopen("DemandesEnAttente_Estimate.aspx?id=" + idAgir, "RadWindow1");

}

所以我的問題是:在JS中有什么方法可以做同樣的事情?

提前致謝

AFAIK,這是不可能的。 您可以從JS中檢測到兼容模式 ,但據我所知無法進行設置。

至於問題所在,通常您可以使用幾種解決方案:

  1. 如果您在站點中使用母版頁,請在母版頁中添加元標頭( <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> )。
  2. 與#1相似,如果您使用的是通用基礎頁類(一種好的建議做法),則可以將通用基礎頁的meta標頭注入所有頁面。
  3. 最后,您可以使用IIS配置將http標頭添加到所有響應中。

例如,對於IIS7 / IIS7.5,可以使用web.config

<system.webServer>
  <httpProtocol>
     <customHeaders>
       <remove name="X-UA-Compatible" />
       <add name="X-UA-Compatible" value="IE=EmulateIE7" />
     </customHeaders>
  </httpProtocol>
</system.webServer>

我建議使用#1或#2-如果您沒有母版頁或基礎頁類,那么也許是介紹兩者的好時機。

您可以嘗試將此HTML標簽添加到任何需要兼容性的頁面的頂部:

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

這樣,您就不需要JavaScript解決方案。 當然,如果您具有更改HTML的能力,那么最好的解決方案是修復頁面,使其不需要向后兼容。

我相信影響客戶端標頭的唯一方法是使用XmlHttpRequest請求頁面時。 對我來說,談論在頁面加載后修改標頭沒有意義,這實際上是您要的內容。

您的C#示例所做的是在HTML頁面中添加以下meta標簽:

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

如果您在運行JS代碼的頁面上手動執行此操作,則它將正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM