1

在我的标题中,我有:

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

上面的代码很容易将使用 < IE 8 的用户重定向到另一个地方ie-sucks

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

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

我用这个修复了 IE 用户:

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

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

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

预先感谢

4

2 回答 2

1

你只是要把自己绑在结上做你想做的事。

如果用户使用的是 IE8 或更少(如您原来的条件语句),那么在您的页面顶部显示一条消息怎么样?

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

<!--[if lte IE 8]>
    .my-message {
        display: block;
    }
<![endif]-->
于 2013-02-11T12:06:45.743 回答
1

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

对于重定向 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 条件条件下将 URL 复制到其浏览器并查看“此处不需要 IE”消息?任何这样做的人都应该知道,他并没有真正使用 IE,所以这不应该令人困惑。你有很多想法。您无法弄清楚其他人会做的所有行为;)

于 2013-02-11T12:06:54.977 回答