0

是否有可能配置ERB頁檢測IE版本,並基於該選擇不同的兼容性標籤,所以它應該工作:如果條件X-UA兼容的內容

用戶IE = 10然後 < META HTTP-當量= 「X-UA-兼容」 內容= 「IE = EmulateIE9」/>

別的

因爲我需要正是我描述的邏輯請不要提出其他的解決方案。 我們有一個應用程序在IE10中不起作用,並且我們嘗試的所有解決方案都無法正常工作,只有IE = EmulateIE9能夠正常工作。

+0

該解決方案是否可以使用JavaScript? –

+0

IE11如何?它沒有問題嗎? – Teemu

+0

我假設你已經嘗試過了:只需提一下,因爲它解決了我以前使用舊版IE的一些隨機問題。 – Shilly

回答

1

該應用程序在IE11或Microsoft Edge中工作嗎?如果沒有,那麼你可以強制所有的微軟瀏覽器使用<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">模擬IE9。

如果您需要專門針對IE10,那麼您應該使用功能檢測,因爲IE10+ no longer supports conditional comments和用戶代理嗅探可能是不可靠的。

下面是一個代碼片段,它通過檢查版本特定的CSS屬性來標識瀏覽器。它是a solution that I found here的簡化版本。我在IE9,10,11和Microsoft邊測試它:

<!DOCTYPE html> 
    <html> 
     <head> 
     <title>Browser Detection</title> 
     </head> 
     <body> 
     <h1>Browser Detection</h1> 
     <h2 id="message"></h2> 

     <script> 
      var message = document.getElementById('message'); 
      var browser = "Less than IE10 (or not IE at all)"; 

      if (document.body.style['msTouchAction'] != undefined) { 
      browser = "IE10"; 
      } 
      if (document.body.style['msTextCombineHorizontal'] != undefined) { 
      browser = "IE11 or higher"; 
      } 
      message.innerHTML = browser; 
     </script> 

     </body> 
    </html> 

,因爲得到的Javascript在體內執行後的頭meta標籤已經被上面的代碼可能無法滿足您的需要解析。

我想你可以觸發IE10 +瀏覽器的頁面重定向,並添加一個參數到URL,這將阻止下次執行功能檢測Javascript(你不想創建一個無限循環)。一個簡單的例子:

 <script> 
      if (!document.location.search) { 
      if (document.body.style['msTouchAction'] != undefined) { 
       // Browser is IE10 or higher 
       window.location = "http://www.yoururl.com/?ie9mode"; 
      } 
      } 
     </script> 

一個更好的解決辦法是將瀏覽器檢測腳本的結果存儲在一個會話變量,這樣你就不需要任何附加的URL。

我希望這有助於!