如果有人使用任何版本的Internet Explorer访问该页面,我希望显示一条警告消息。我读过的所有帖子都说可以使用,但似乎不适合我。
这是我的代码:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
.
.
.
<!--[if IE]>
<script>
$(document).ready(function(){
alert('This website is not compatible with internet explorer.
Please visit the page with any other browser.');
});
</script>
<![endif]-->
</head>
我做错了吗?
答案 0 :(得分:3)
我已经找到了一种简单,简短,快速的方法来检测通过javascript使用的实际浏览器,无论用户代理是否被手动覆盖,这比(现已弃用的)jQuery更可靠。浏览器嗅探方法。这个依赖于查看window.navigator.productSub属性。
在您的情况下,仅用于检测IE,这应该适用于所有现代浏览器:
if(!window.navigator.productSub && window.navigator.appName !== "Opera")
它有效,因为只有IE和Opera将navigator.productSub称为“未定义”。 Blink引擎与Webkit相同。 Konqueror和Safari的所有分支都有navigator.productSub = 20030107。
虽然我还没有完全确定这个navigator.productSub对于所有浏览器都是可靠的,但以下信息表明它对99%的情况都是安全的,即使对于好的旧Netscape: https://developer.mozilla.org/en-US/docs/DOM/window.navigator.productSub http://www.billpegram.com/JavaScript/navigatorproperties.html
PS:有关navigator.productSub时间戳的更多历史记录: Why does navigator.productSub always equals '20030107' on Chrome and Safari?
答案 1 :(得分:1)
如果您真正想要使用Internet Explorer版本5到9的所有Internet Explorer用户运行它,那么您的代码就可以了。这些是唯一支持条件注释的版本。
另一种解决方案,可以找到我在本网站上最喜欢的答案之一here。它已经在Internet Explorer 6到10版本中进行了测试,它会查找特定于Internet Explorer的函数,如果函数存在,它将执行脚本。
答案 2 :(得分:0)
尝试这样的事情
<!--[if = IE 6]>
<script>
alert("6");
</script>
<[endif]-->
<!--[if = IE 7]>
<script>
alert("7");
</script>
<[endif]-->
<!--[if = IE 8]>
<script>
alert("8");
</script>
<[endif]-->
我没有IE所以无法测试,对不起
Apparently this doesn't work for the latest version of IE
jQuery还删除了jQuery.browser,并建议使用jQuery.support
进行功能检测当您尝试检测某些功能时,IE显然会返回false。
Microsoft过去常常维护一个页面(Detecting Windows Internet Explorer More Effectively)来解释如何检测ie,但自2011年以来不再维护
您可以使用Modernizr进行功能检测,并根据浏览器支持的功能做出决定。
这是我最害怕的主题。