3

我使用脚本生成器 -- http://detectmobilebrowsers.com/ -- 来检测手机,以便将页面重定向到具有特殊手机模板的子域。

我只对手机感兴趣。Ipad、Android 平板电脑不会被重定向。我只需要知道这个脚本是否涵盖 iPhone 4 和 iPhone 5,因为我没有这些模型来测试它。无论如何,我已经使用开发者菜单 - 用户代理 - Safari ios 4.3.3 Iphone 在 Safari 上进行了测试,并根据需要重定向页面。这是否足以满足我的需求,或者我也应该使用以下脚本:

var iphone4 = (window.screen.height == (960 / 2)) ? true : false;
var iphone5 = (window.screen.height == (1136 / 2)) ? true : false;
if (iphone4 && iphone5) {
    parent.location.href='http://www.mobile.mysite.com';
}
4

2 回答 2

5

是的,来自http://detectmobilebrowsers.com/的正则表达式将检测 iPhone(以及 iPod Touch)所有版本......ip(hone|od)是匹配它的正则表达式部分。

如果您想要一个仅适用于 iPhone/iPod 的脚本,您可以将上述脚本缩减为:

(function (a, b) { if (/ip(hone|od)/i.test(a)) window.location = b }
)(navigator.userAgent || navigator.vendor || window.opera, 'http://www.mobile.mysite.com');

编辑:

或者改为使用此脚本来检测移动设备

(function (a, b) { if (/Mobi/.test(a)) window.location = b }
)(navigator.userAgent || navigator.vendor || window.opera, 'http://www.mobile.mysite.com');

基于使用用户代理的浏览器检测推荐| MDN

我们建议在用户代理中的任意位置查找字符串“Mobi”以检测移动设备。如果设备足够大以至于没有标记“Mobi”,您应该为您的桌面站点提供服务(作为最佳实践,它应该支持触摸输入,因为越来越多的桌面机器出现了触摸屏)。

于 2013-03-27T20:32:42.643 回答
1

这应该有效。

var bIsMobile = (navigator.userAgent.toLowerCase().indexOf("mobile") != -1 && navigator.userAgent.toLowerCase().indexOf("ipad") == -1);
于 2013-03-27T20:11:21.203 回答