在我的标题中我有:
<!--[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用户并重定向?
提前感谢
答案 0 :(得分:1)
你只是打算把自己束缚在做你想做的事情上。
如果用户在原始条件语句中使用IE8或更低版本,只在页面顶部显示一条消息怎么样?
您的消息只会建议升级其浏览器或下载Chrome,Firefox或其他任何内容,并且还可以关闭/隐藏消息。
<!--[if lte IE 8]>
.my-message {
display: block;
}
<![endif]-->
答案 1 :(得分: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从IE条件复制到其浏览器并查看“此处不需要IE”消息?任何人都应该知道,他并不是真的使用IE,所以这不应该让人困惑。你想到了许多想法。你无法弄清楚其他人会做的所有行为;)