繁体   English   中英

浏览器版本检测和重定向

[英]Browser version detect and redirect

嗨,我已经确定了HTML5 / CSS3元素,这些元素会导致较旧的浏览器在我的网站上遇到麻烦。 我知道反对使用此方法进行重定向,但是我认为这对我很好。 在论坛上尝试了此方法以及其他一些方法,并且我正在使用IE8.0.6001.18702进行测试,并且未重定向

<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”版本。

有机会吗?

正如您指出的那样,您实际上不应该这样做。 但是,如果对此进行了设置,请注意,条件检查已关闭:

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

同样,第一个字符navigator.appVersion不会为您提供浏览器的版本。 在IE 10中,它解析为“ 5.0(兼容; MSIE 10.0; Windows NT 6.1; WOW64; Trident / 6.0;”

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

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" 
} 

复制自的功能: 如何检测浏览器的版本?

请重新考虑这样做。 您在样式HTML5元素时遇到困难吗? 考虑使用html5shiv: https//code.google.com/p/html5shiv/

您可能会错过分号吗?( 编辑:不是必需的,但是大多数解析器可以更好地使用它们)?

另外,检查版本字符串,您只获取被称为“ ver”的字符串的第一个字符,将其与大于该字符串的字符串进行比较(请查看歌剧“ 11.10”)。 您应该在第一个空格(应该在完整的版本号之后)子字符串。

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM