2013-03-24 125 views
0

我正在更新我的網站設計,因爲它在IE10中無法正常工作。IE10中的JavaScript瀏覽器檢測

我正在使用條件註釋和JavaScript的組合來處理IE版本檢測,但由於IE10已經放棄了前者,並且我沒有找到忽略後者的理由,所以我在這裏尋求幫助。我一直在閱讀此線程:

Detect IE version (prior to v9) in JavaScript

但我的JavaScript的知識已經不遠了小人物,所以我不知道我是否應該尋找修改我的代碼或報廢,並採取和改變該URL中提到的代碼(如果是這樣,我應該怎麼做)。

我目前使用的代碼:

<link rel="stylesheet" type="text/css" href="barebones.css"> 

    <!--[if lte IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie.css"> 
    <![endif]--> 

    <!--[if gt IE 8]> 
    <link rel="stylesheet" type="text/css" href="default.css"> 
    <![endif]--> 

<script type="text/javascript"> 
    //<![CDATA[ 
    var appName = window.navigator.appName; 
if (appName !== "Microsoft Internet Explorer") 
document.write("<link rel=\"stylesheet\" type=\"text\/css\" href=\"default.css\" \/>");//]]> 
</script> 

如果有幫助,我可以張貼我的網站的網址,但我不希望人們認爲我試圖獲得更多的網站流量什麼的。

我知道我目前使用的代碼可以稍微改進一點,但我寧願在彈簧清潔之前先使用它。

在多臺機器上的IE10似乎完全忽略JavaScript,我不知道爲什麼。 IE9處理它很好。

任何援助將不勝感激。

+8

代替檢測瀏覽器,查找實際問題並編寫跨瀏覽器代碼。與IE6-7不同,IE10的標準足以符合標準。 – 2013-03-24 19:32:44

+0

...和8和9 :-) – Pointy 2013-03-24 19:33:37

+0

我正在爲IE 9和10提供與其他瀏覽器相同的樣式表。 – mikeymike 2013-03-24 19:37:49

回答

0

最近我採用了css browser selector作爲解決方案。這是一個js將特定的css類附加到文檔根目錄,因此您可以在css中的瀏覽器中處理樣式差異而無需黑客。它雖然很老,不支持IE10,但正如其他人所說,IE10是非常標準的。雖然它處理IE6,7和8(你似乎對這些瀏覽器採取特殊措施),所以我猜測它會適用於你。

一般來說,你應該避免瀏覽器特定的黑客攻擊或像這樣的檢查,因爲它們很難維護,並且不能保證總能正常工作。

0

由於IE10不承認有條件的意見和你所需要的是檢測瀏覽器的版本,我已經實現了一個功能來做到這一點:

function getIEVersion() { 
     if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
     /* 
     * sample user-Agent 
     * "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 
     */ 
     //test for MSIE x.x; 
     var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number 
     return ieversion; 
     } 
    return -1; 
    } 

    alert(getIEVersion()); 

它返回的IE瀏覽器版本號。 (例如:10,9,7 ..)

5

這些類型的問題,以避免「broswer檢測」,並用「功能檢測」去打交道時,這是最好

http://modernizr.com/庫將幫助你測試用於瀏覽器兼容的特定功能,而不是繞過不同版本的瀏覽器。

這就是說,IE10往往是一個符合標準的瀏覽器。您可以訪問http://caniuse.com/,查找各種JavaScript和CSS功能的圖表,以及在所有不同的瀏覽器中支持哪些功能。

你會發現IE10遵守了很多這些標準。

2

雖然我喜歡上面的一些答案,但我知道有時候會有一些可能的快速修復來解決問題,有時會造成所有的不同。因此,這裏的另一種解決方案,我發現效果很好:

<script language="javascript" type="text/javascript"> 
    if(Function('/*@cc_on return [email protected]*/')()) document.documentElement.className+= ' ie10'; 
</script> 

然後執行特定的瀏覽器的CSS規則,在適當的CSS文件,我想補充(例如):

.ie10 div{new css rule} 
.ie10 div{another new css rule}