【问题标题】:Easiest way in browser to detect mobile phones在浏览器中检测手机的最简单方法
【发布时间】:2013-03-18 02:00:54
【问题描述】:

我使用脚本生成器 -- 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';
}

【问题讨论】:

  • 如果您只对屏幕分辨率感兴趣,我会说屏幕尺寸是一种更安全的方法。如果您在子域中具有特定于移动设备的功能,那么这种骇人听闻的事情是我所知道的唯一方法。
  • 我会使用 Mobile_Detect PHP 类。它有各种选项,甚至可以添加自己的检测参数。来源:code.google.com/p/php-mobile-detect
  • 如今,手机和平板电脑的屏幕尺寸重叠越来越多。
  • 我也是这么想的,否则我会使用一个简单的脚本,例如: if( screen.width
  • Adam D,我的网站是 HTML,所以我不能使用 Mobile_Detect PHP。

标签: javascript jquery-mobile mobile


【解决方案1】:

是的,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');

基于Browser detection using the user agent | MDN的推荐:

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

【讨论】:

  • 我不需要任何仅适用于 iPhone/iPad 的脚本。我所需要的只是将手机用户重定向到包括 iPhone 4 和 iPhone 5 在内的移动版本网站。所以你说它也在这些方面工作。使用正则表达式比较好: if( screen.width
  • 查看我的编辑...用户代理嗅探“Mobi”是移动设备检测的推荐方法。检查screen.width 也可能有效,但考虑到屏幕/设备的多样性,更有可能导致误报。
  • 不幸的是,使用此脚本将为 Ipad 启用移动站点版本,这真的很糟糕(我只是测试它),所以我回到 detectmobilebrowsers.com 脚本。
【解决方案2】:

这应该可行。

var bIsMobile = (navigator.userAgent.toLowerCase().indexOf("mobile") != -1 && navigator.userAgent.toLowerCase().indexOf("ipad") == -1);

【讨论】:

  • 使用“Mobi”而不是 MikeM 所说的“mobile”
猜你喜欢
  • 2011-02-03
  • 2013-11-26
  • 2012-07-20
  • 2011-12-03
  • 1970-01-01
  • 2012-08-05
  • 2012-12-31
  • 2016-01-01
  • 1970-01-01
相关资源
最近更新 更多