首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器版本检测和重定向

浏览器版本检测和重定向
EN

Stack Overflow用户
提问于 2014-04-15 03:00:03
回答 2查看 8.1K关注 0票数 1

您好,我已经确定了HTML5/CSS3元素,这些元素会导致较老的浏览器与我的站点发生冲突。我意识到反对使用这种方法来重定向,但我认为它对我来说很好。我从论坛上尝试了这个和其他几个,我使用IE8.0.6001.18702进行了测试,它没有重定向

代码语言:javascript
复制
<script type="text/javascript"> 
<!-- 
browser = navigator.appName 
ver = navigator.appVersion 
version = ver.substring(0,1) 
if (browser=="Internet Explorer") { 
if (version<="8.1") 
document.location.href="lores.htm" 
} 
if (browser=="Safari") { 
if (version<="6.0") 
document.location.href="lores.htm" 
} 
if (browser=="Firefox") { 
if (version<="5.0") 
document.location.href="lores.htm" 
} 
if (browser=="Chrome") { 
if (version<="15.0") 
document.location.href="lores.htm" 
} 
if (browser=="Opera") { 
if (version<="11.10") 
document.location.href="lores.htm" 
} 
//--> 
</script>

所以问题是似乎什么都不起作用,所以我真的需要一些建议。我包含了这个例子,以显示我想要重定向到基本网站的'lores.htm‘的版本。

有没有可能帮上忙?

EN

回答 2

Stack Overflow用户

发布于 2014-04-15 03:12:56

正如你所指出的,你真的不应该这样做。但是如果你设置了这个,注意你的条件检查是关闭的:

navigator.appName解析为"Microsoft Internet Explorer",而不是您所写的"Internet Explorer“。

此外,第一个字符navigator.appVersion不会为您提供浏览器的版本。在IE10中,它解析为"5.0 (兼容;MSIE10.0;Windows NT6.1;WOW64;三叉树/6.0;“

要使您的代码正常工作,您需要将其更新为类似以下内容:

代码语言:javascript
复制
function get_browser_version(){
  var N=navigator.appName, ua=navigator.userAgent, tem;
  var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
  if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
  M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?'];
  return M[1];
}

var browser = navigator.appName;
var version = get_browser_version();

if (browser=="Microsoft Internet Explorer") { 
    if (version<="8.1") 
        document.location.href="lores.htm" 
} 

函数复制自:How can you detect the version of a browser?

请重新考虑这样做。你在设计HTML5元素的样式上有困难吗?考虑使用html5shiv:https://code.google.com/p/html5shiv/

票数 1
EN

Stack Overflow用户

发布于 2014-04-15 03:09:40

您可能遗漏了分号(编辑:不需要,但大多数解析器可以更好地使用分号)?

另外,检查版本字符串,你只需要获取你称之为'ver‘的字符串的第一个字符,在这里你要将它与一个大于这个数字的字符串进行比较(看看opera '11.10')。您应该在第一个空格处使用子字符串(应该在完整版本号之后)。

代码语言:javascript
复制
<script type="text/javascript">
browser = navigator.appName;
ver = navigator.appVersion;
version = ver.substring(0, ver.indexOf(' '));
if (browser == "Internet Explorer") {
    if (version <= "8.1")
        document.location.href = "lores.htm";
}
if (browser == "Safari") {
    if (version <= "6.0")
        document.location.href = "lores.htm";
}
if (browser == "Firefox") {
    if (version <= "5.0")
        document.location.href = "lores.htm";
}
if (browser == "Chrome") {
    if (version <= "15.0")
        document.location.href = "lores.htm";
}
if (browser == "Opera") {
    if (version <= "11.10")
        document.location.href = "lores.htm";
}
</script>
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23068107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档