浏览器中最简单的检测移动设备的方法

3
我使用一个脚本生成器--http://detectmobilebrowsers.com/,用于检测移动手机以便将页面重定向到一个手机专用的子域名上。我只对手机感兴趣,不会重定向IPad和安卓平板电脑。我需要知道这个脚本是否支持IPhone 4和IPhone 5, 因为我没有这些机型来测试。无论如何,我已经在Safari上进行了开发者菜单-用户代理-Safari ios 4.3.3 Iphone的测试,页面已按需重定向。这对我来说是否足够,还是我应该使用以下脚本:
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';
}

如果你只关心屏幕分辨率,那么我会说屏幕尺寸是一种更安全的方法。如果你在子域中有特定于移动设备的功能,那么这种 hacky 的方法是我所知道的唯一方法。 - thatidiotguy
我会使用Mobile_Detect PHP类库。它具有各种选项,甚至可以添加自己的检测参数。来源:http://code.google.com/p/php-mobile-detect/ - adamdehaven
现在手机和平板电脑的屏幕尺寸越来越重叠。 - Matt Coughlin
我也是这么想的,否则我会使用一个简单的脚本,如:if( screen.width <= 500) {location.href="reditect.html"} - Blazer
Adam D,我的网站是HTML,所以我不能使用Mobile_Detect PHP。 - Blazer
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”,则应提供桌面站点(最佳实践是支持触摸输入的桌面站点,因为越来越多的桌面机器配有触摸屏)。

我不需要任何仅适用于iPhone/iPad的脚本。我只需要将仅限移动电话用户(包括iPhone 4和iPhone 5)重定向到移动版本网站。所以你说它也适用于这些设备。最好使用正则表达式进行比较,而不是if(screen.width <= 800)。 - Blazer
检测"Mobi"的用户代理嗅探是移动设备检测的推荐方法。检查screen.width也可能有效,但由于屏幕/设备的多样性,更容易产生误报。 - MikeM
很遗憾,使用这个脚本会为iPad启用移动站点版本,这真的很糟糕(我刚刚测试过),所以我又回到了http://detectmobilebrowsers.com/脚本。 - Blazer

1
这应该可以工作。
var bIsMobile = (navigator.userAgent.toLowerCase().indexOf("mobile") != -1 && navigator.userAgent.toLowerCase().indexOf("ipad") == -1);

使用MikeM所说的"Mobi"代替"mobile"。 - alvaro562003

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接