如果浏览器是Internet Explorer,请运行脚本

时间:2013-04-27 23:45:54

标签: javascript internet-explorer if-statement

如果有人使用任何版本的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>

我做错了吗?

3 个答案:

答案 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进行功能检测,并根据浏览器支持的功能做出决定。

这是我最害怕的主题。