IE9错误地重定向到移动网站

时间:2012-05-04 15:50:58

标签: javascript html internet-explorer

在我们的索引页面上,我们有脚本将智能手机(iPhone,Android和Windows Phone)上的用户重定向到我们的移动网站。我们使用的技术是:

if ( navigator.userAgent.match( /iPhone/ ) && ! navigator.userAgent.match( /iPad/ ) ) {
        window.location="mobile.html";
        }
    else if ( navigator.userAgent.match( /Android/ ) && ! navigator.userAgent.match( /Android 3/) ) {
        window.location="mobile.html";
        }
    else if ( navigator.userAgent.match( /Windows Phone/ ) || navigator.userAgent.match( /Zune/ ) ) {
        window.location="mobile.html";
        }

一切都运行良好,直到我们在IE9上测试了这个,由于某种原因重定向到移动网站,即使它的userAgent不包含上面的任何字符串。 IE9的userAgent是:

Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)

IE8不会以这种方式运行,也不会运行任何其他平台。这个剧本是不正确的,还是因为它的报复性douchebaggery IE再次崩溃了?感谢。

3 个答案:

答案 0 :(得分:2)

根据这个post regarding IE9 User Agents是IE9在兼容模式下更改其用户代理并且可以包含'Zune'字符串。看起来我们必须尝试使用​​另一个字符串来重定向Windows Phone用户。感谢。

答案 1 :(得分:1)

使用.match()方法时,它会返回数组,该数组可以为空([])或不是。 IE很可能认为[]true表达式,所以我建议您执行以下操作:

if(/iPhone/.test(navigator.userAgent) && !/iPad/.test(navigator.userAgent)){
    window.location="mobile.html";
}else if(/Android/.test(navigator.userAgent) && !/Android 3/.test(navigator.userAgent){
    window.location="mobile.html";
}else if(/Windows Phone/.test(navigator.userAgent) || /Zune/.test(navigator.userAgent)){
    window.location="mobile.html";
}

我想它会起作用,因为.test()方法只返回truefalse

答案 2 :(得分:0)

感谢您的回答和帮助。以下使用Windows 8手机

为我工作
if(/iPhone/.test(navigator.userAgent) && !/iPad/.test(navigator.userAgent)){
    window.location="/mobile";
}else if(/Android/.test(navigator.userAgent) && !/Android 3/.test(navigator.userAgent){
    window.location="/mobile";
}else if(/Windows Phone/.test(navigator.userAgent) || /Zune/.test(navigator.userAgent)){
    window.location="/mobile";
}

我将window.location =“mobile.html”更改为我为移动设备的index.html文件创建的实际目录

ex. /root directory/mobile