安卓手机浏览器检测
Android Phone Browser Detection
我有一个web应用程序,手机用户可以在其中看到移动优化的网站。新的三星Galaxy SIII用户代理没有提供任何来自手机的请求的线索。检测手机的最佳方法是什么?
我知道javascript特性检测(即modernizer),但我希望有更好的功能。以下是三星Galaxy SIII用户代理:
Mozilla/5.0(X11;Linux x86_64)AppleWebKit/534.24(KHTML,类似Gecko)Chrome/11.0696.34 Safari/534.24
编辑:SIII有两个可能的用户代理。以上是"桌面"版本。有趣的东西。有关详细信息,请参阅下面的链接。
http://www.anandtech.com/Show/Index/5310?cPage=19&all=False&sort=0&page=5&slug=samsung galaxy nexus冰淇淋三明治评论
看看这个用户代理,我不得不说,它很难与非手持设备区分开来。
浏览器检测的问题是,很容易调整用户代理字符串,因此你永远不知道服务器告诉你的是诚实的还是不诚实的。
在这种情况下,您有两种选择:
-
你可以检查手机发送的每一个标题,也许可以看看是否有一个可以使其成为唯一的
-
或者通过测试页面加载时间等来找到一些解决方法。。。。,举个异想天开的例子,手持设备上的浏览器通常会比台式机上的浏览器渲染页面慢一点,所以在用之类的东西测试了所有可能的移动设备后
-
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
// some code..
}
您可以看到一个只有一个简单脚本的页面是否没有在理想的时间加载。
你明白了。
此外,试着去这里看看它是否能检测到你:http://detectmobilebrowsers.com/
"桌面模式"用户代理的设计目的是,当用户故意选择桌面模式时,web服务器不会提供移动/平板电脑界面-从用户中删除该选择是一种可用性反模式。
如果你绝对*必须*覆盖用户的选择,那么在JavaScript当前(2013)中,如果以下所有内容都是真的,那么它很可能是Android设备:
'ontouchstart' in document.documentElement
navigator.vendor === 'Google Inc.'
/^Linux armv/.test(navigator.platform)
然而,对于一些不太常见的浏览器设置,例如基于ARM的带触摸的ChromeBook,例如可能在带有ARM处理器的Linux上运行的Chromium(尽管可能是Linux/ARM),例如可能是其他浏览器Firefox/Opera等,例如像电视一样不基于触摸的安卓设备,例如Chrome是否可以在带ARM处理器的Windows RT上运行?例如在英特尔上运行的安卓系统。
毕竟我必须检测"桌面视图",所以与robocat的答案类似,这就是我用来检测"桌面查看"的方法。它并不完美,但它似乎提供了避免误报的正确平衡:
if (userAgent.indexOf('X11; Linux x86_64') !== -1
&& 'ontouchstart' in document.documentElement
&& /^Linux armv/.test(navigator.platform)
&& _constructor.isChrome) {
if ((window.outerWidth < 500 && window.outerHeight < 800) || (window.outerWidth < 800 && window.outerHeight < 500)) {
// do stuff.
}
}
帮助我决定宽度/高度过滤器应该是什么
http://mydevice.io/devices/http://viewportsizes.com/?filter=
- jQuery检测浏览器是否支持Zoom
- 使用(navigator.geolocation)检测浏览器功能错误
- 如何在jquery中检测浏览器的后退按钮,如果有任何对话框打开,请关闭它
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- 如何检测浏览器是否正在加载
- 如何检测浏览器并根据浏览器显示视频
- 如何检测浏览器控制台/检查器是否已打开
- 正在检测浏览器's的结束选项卡
- 如何检测浏览器大小并实时更改javascript函数控件
- 如何单独检测浏览器刷新
- 如何动态检测浏览器视口大小的变化
- php检测浏览器窗口宽度,然后包括适当的php文件
- 如何简单地用JQuery或JavaScript检测浏览器类型
- 如何__defineGetter__可用于检测浏览器中的控制台是否打开
- 检测浏览器's的前进和后退按钮,并触发jquery事件
- 如何检测浏览器是否支持js-onscroll.立即
- 如何检测浏览器(不是窗口)关闭事件
- 如何检测浏览器窗口是否已从另一个浏览器窗口打开
- 浏览器检测浏览器,如 Chrome Canary
- 如何在检测浏览器语言的同时停止JavaScript的无限循环