浏览器识别

browser identification

本文关键字:识别 浏览器      更新时间:2023-09-26

我想确定浏览器是否为IE然后转到if块,其他浏览器转到Java脚本中的else块。这里有一个代码

var browserName=navigator.appName;
if(browserName == "Microsoft Internet Explorer"){
     IE code
}
else{
     Other code
}

但是我想知道有没有其他实现它的方法?

不应该做浏览器嗅探,而应该做特性检测。新版本的IE可能支持与标准兼容的东西,而在旧版本中你需要绕过这些东西或使用ms特有的东西。

微软自己也写了一篇关于最好的方法的文章,并提供了坏代码(通过嗅探)和好代码(通过检测)的例子。

我刚开始使用这个脚本来识别浏览器、版本和操作系统:

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版本(对此不确定)