重定向NOT IE用户

时间:2013-02-11 11:59:41

标签: html internet-explorer

在我的标题中我有:

<!--[if lte IE 8]>
<meta http-equiv="refresh" content="0; url=/ie-sucks" />
<script type="text/javascript">
    /* <![CDATA[ */
    window.top.location = '/ie-sucks';
    /* ]]> */
</script>

上述代码可以轻松地重定向正在使用&lt;的用户。 IE 8到另一个地方ie-sucks

所以这个工作正常,但我只是检查用户,在他们重定向到/ ie-sucks之后,他们打开Mozilla Firefox并再次将mysite.com/ie-sucks复制粘贴到地址栏中,所以再一次他们会遇到那个页面......

我知道这是愚蠢的,但我需要将它们从该页面重定向到主站点,如果它们不低于IE8或使用其他浏览器......

我用以下方法修复了IE用户:

<!--[if !lte IE 8]>

但此代码不适用于Fiefox用户......

我如何检测非IE用户并重定向?

提前感谢

2 个答案:

答案 0 :(得分:1)

你只是打算把自己束缚在做你想做的事情上。

如果用户在原始条件语句中使用IE8或更低版本,只在页面顶部显示一条消息怎么样?

您的消息只会建议升级其浏览器或下载Chrome,Firefox或其他任何内容,并且还可以关闭/隐藏消息。

<!--[if lte IE 8]>
    .my-message {
        display: block;
    }
<![endif]-->

答案 1 :(得分:1)

<!--[if ... ]>只会由I​​E处理,这就是诀窍。

对于重定向Firefox或其他浏览器,您应该更好地按用户代理分隔(但请记住,更改用户代理非常简单!)。这可以使用PHP完成,例如:

<?php

$useragent = $_SERVER['HTTP_USER_AGENT']; //get the user agent

if(!strpos($useragent, "MSIE")) {
  // user agents from IE should always look like this and include 'MSIE':
  // Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64)
  header("Location: http://example.com/");
}

?>

通过像这样处理用户代理可能还有一种JavaScript方式:

if(navigator.userAgent.indexOf('MSIE') == -1) { ...

但同样重要的是:请记住,也可能有用户代理,可能在其字符串中使用“MSIE”或使用Internet Explorer的用户,将其更改为“Firefox”或其他。所以这不是一个自动防故障的解决方案,但我想,这可能是你问题的答案。

PS:为什么有人应该将IE从IE条件复制到其浏览器并查看“此处不需要IE”消息?任何人都应该知道,他并不是真的使用IE,所以这不应该让人困惑。你想到了许多想法。你无法弄清楚其他人会做的所有行为;)