我想確定是否瀏覽器是IE,然後轉到如果阻止,其他瀏覽器要在Java腳本中阻塞。 我這裏有一個代碼,瀏覽器識別
var browserName=navigator.appName;
if(browserName == "Microsoft Internet Explorer"){
IE code
}
else{
Other code
}
,但我想知道有沒有實現它的任何其他方式?
我想確定是否瀏覽器是IE,然後轉到如果阻止,其他瀏覽器要在Java腳本中阻塞。 我這裏有一個代碼,瀏覽器識別
var browserName=navigator.appName;
if(browserName == "Microsoft Internet Explorer"){
IE code
}
else{
Other code
}
,但我想知道有沒有實現它的任何其他方式?
而不是做瀏覽器嗅探,你應該做功能檢測。 IE的後續版本可能支持符合標準的東西,在舊版本中需要解決或使用MS特定的東西。
微軟自己有written up about the best way這樣做,並提供壞代碼(通過嗅探)和良好的代碼(通過檢測)的例子。確保你遵循「良好的代碼」路線。
我剛開始使用該腳本識別瀏覽器,版本和操作系統:
http://www.quirksmode.org/js/detect.html
如果您需要基於對特定的對象和方法的瀏覽器支持使用不同的代碼,它通常最好使用對象或方法檢測代替瀏覽器檢測。我使用瀏覽器檢測來收集用戶的統計信息,而不是啓用或禁用功能。
Quirksmode有一篇關於爲什麼不用這種方式使用瀏覽器檢測的簡短文章:http://www.quirksmode.org/js/support.html它也從瀏覽器檢測腳本鏈接。
我發現這個任務非常困難,因爲瀏覽器都有類似的名稱和不同的userAgent字符串,所以這是我的條件語句來識別瀏覽器。
我用它來識別不同樣式表的瀏覽器。
function styc()
{
var str = navigator.userAgent;
var res = navigator.userAgent.match(/Trident/);
var res2 = navigator.userAgent.match(/Firefox/);
if(res=="Trident"||res2=="Firefox")
{
//alert(navigator.userAgent);//for testing
document.getElementById('IE_fix').setAttribute("href", "IE_fix.css");
}
else
{
//alert("no");//for testing
document.getElementById('IE_fix').setAttribute("href", "mt_default.css");
}
}
在userAgent字符串中找到一個唯一的詞匹配它,並根據您正在做的事情檢查條件是否爲真。
我在IE中找到的唯一字是Trident,並且根據MicroSoft標識IE版本(不是正面的)。
有條件的評論嗎? – 2011-04-15 11:56:57
您可以使用此方法識別IE:http://ajaxian.com/archives/attack-of-the-ie-conditional-comment – 2011-04-15 11:58:56
如果您使用jquery:http://api.jquery.com/jQuery.browser /(但已棄用) – Willem 2011-04-15 11:59:10