我想确定是否浏览器是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