如果他们使用的是Internet Explorerv9之前的版本,我想将我们网站的用户反弹到错误页面.我们的时间和金钱都不值得支持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
}
}
Run Code Online (Sandbox Code Playgroud)
这个代码会起作用吗?
关闭一些可能会出现的评论:
useragent字符串.我并不担心.pre-v9 IE浏览器都不支持.在整个站点中按功能检查功能将是一种浪费.IE v1(或> = 20)访问该网站不会将'badBrowser'设置为true,并且警告页面将无法正确显示.这是我们愿意承担的风险.IE 10,使得这种方法绝对无用.还有其他明显的问题需要注意吗?
如何针对某些情况(如Internet Explorer特定的CSS或特定于Internet Explorer的JavaScript代码)仅定位Internet Explorer 10?
我试过这个,但它不起作用:
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
Internet Explorer 10忽略条件注释并使用<html lang="en" class="no-js">而不是<html class="no-js ie10" lang="en">.
html javascript css conditional-comments internet-explorer-10
我知道IE 11具有与所有其他IE不同的用户代理字符串
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)
我试图用这个问题的答案检测IE 11'
那是 !!navigator.userAgent.match(/Trident\/7\./)
但我收到了错误
Object not found and needs to be re-evaluated.
然后我在IE11中打开开发者控制台并尝试访问一些预定义的javascript对象,我仍然得到相同的错误.
我试过了
navigator.userAgent
window.navigator
console.log('test');
有人对此有任何想法吗?
使用JavaScript定位IE11的最不容易出错的方法是什么?
注意:这应该仅用于分析或通知用户他们正在使用的浏览器.对于其他一切,都有特征检测.