如果用户使用早于v9的Internet Explorer版本,我希望将其反弹到错误页面,因为我们不值得花时间和金钱来支持IE pre-v9。其他非IE浏览器的用户都可以正常使用且无需反弹。这是建议的代码:
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 && //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1 //v10, 11, 12, etc. is fine too
);
if(badBrowser){
// navigate to error page
}
}
这段代码能实现吗?
在此之前,我想先回应几个可能会出现的评论:
- 是的,我知道用户可以伪造他们的
useragent
字符串,但我并不担心。 - 是的,我知道编程专家更喜欢检测特性支持而不是浏览器类型,但我认为这种方法在这种情况下并不合理。我已经知道所有(相关的)非 IE 浏览器都支持我需要的功能,而所有的
pre-v9 IE
浏览器都不支持。在整个站点逐个检查每个特性将是一种浪费。 - 是的,我知道有人试图使用
IE v1
(或 >= 20)来访问网站将不会将 'badBrowser' 设置为 true 并且警告页面将无法正常显示。我们愿意承担这种风险。 - 是的,我知道 Microsoft 有 "条件注释" 可以用于精确的浏览器版本检测。但自从
IE 10
起,IE 就不再支持条件注释了,使这种方法变得绝对无用。
还有其他显而易见的问题需要注意吗?
lt IE 9
条件中的代码都将在IE8及以下版本中运行,而其他地方则不会。就是这么简单。这是微软在IE方面做对的唯一一件事情。 - Jimbo Jonny