0

有没有办法检测除 IE 之外的所有浏览器,以便使用 HTAccess 或 Javascript 进行重定向?如果不是 IE,则重定向到 site.com?

4

4 回答 4

2
var ie = /msie/i.test(navigator.userAgent);
if (!ie) { location.href = 'http://site.com'; }
于 2012-10-02T04:52:13.917 回答
2

我建议使用 IE 的条件注释,因为这意味着重定向代码甚至不会被 IE 解释。即 IE 根本不会运行JS 代码,只有其他浏览器会。

使用 JS 重定向

<!--[if !IE]> -->
    <script>
    window.location.href = 'http://not-ie.com'
    </script>
<!-- <![endif]-->

使用元刷新重定向

<!--[if !IE]> -->
    <meta http-equiv="refresh" content="5;url=http://not-ie.com/"> 
<!-- <![endif]-->

重定向前不显示页面的技术

您可以通过有条件地呈现<body>标签来做到这一点。免责声明:尚未对此进行测试。

<!-- for non-ie browsers, render the body tag as invisible -->
<!--[if !IE]> -->
    <meta http-equiv="refresh" content="5;url=http://not-ie.com/"> 
    <body style="display: none">
<!-- <![endif]-->

<!-- for ie, render the body tag normally -->
<!--[if IE]> -->
    <body>
<!-- <![endif]-->

<!-- your page content HTML goes here -->

</body></html>

有关条件评论的更多信息:http ://www.quirksmode.org/css/condcom.html

于 2012-10-02T04:56:15.107 回答
0

你可以做:

<!--[if IE 6]><script>location.href='youhazie6.htm';</script><![endif]-->
于 2012-10-02T04:55:59.977 回答
0

您确实了解带有条件注释的方法,在前面的 unswer 中描述的方法在 IE10 中不起作用?IE10 不支持条件注释,很快就会发布。

因此,要使您的代码真正起作用,请依赖特征检测或 userAgent。但是 userAgent 有时也会失败,当有很多插件时,“Internet Explorer”或“MSIE”可能会在现实生活中被剪掉。

为了使检测更可靠,加入一些特征嗅探:

if ('\v'=='v' || /msie/i.test(navigator.userAgent);) {
  // ah that's you IE!
} 

够了。

于 2012-10-02T06:31:09.870 回答