C# Android手机浏览器检测
我有一个web应用程序,手机用户可以在其中看到经过移动优化的网站。新的三星Galaxy SIII用户代理没有提供来自手机的请求的线索。检测手机的最佳实践是什么 我知道javascript功能检测(即modernizer),但我希望有更好的东西。以下是三星Galaxy SIII用户代理: Mozilla/5.0(X11;Linux x86_64)AppleWebKit/534.24(KHTML,类似Gecko)Chrome/11.0.696.34 Safari/534.24 编辑:SIII有两个可能的用户代理。以上是“桌面”版本。有趣的东西。有关详细信息,请参阅下面的链接C# Android手机浏览器检测,c#,javascript,android,.net,samsung-mobile,C#,Javascript,Android,.net,Samsung Mobile,我有一个web应用程序,手机用户可以在其中看到经过移动优化的网站。新的三星Galaxy SIII用户代理没有提供来自手机的请求的线索。检测手机的最佳实践是什么 我知道javascript功能检测(即modernizer),但我希望有更好的东西。以下是三星Galaxy SIII用户代理: Mozilla/5.0(X11;Linux x86_64)AppleWebKit/534.24(KHTML,类似Gecko)Chrome/11.0.696.34 Safari/534.24 编辑:SIII有两个可
看看这个用户代理,我不得不说,要将其与非手持设备区分开来是非常困难的 浏览器检测的问题在于,显然很容易调整用户代理字符串,因此您永远不会真正知道服务器告诉您的内容是否真实 在这种情况下,您有两种选择:
- 你可以检查手机发送的每一个标题,也许可以看看是否有一个标题可以使它独一无二
- 或者通过测试页面加载时间等找到一些解决方法。作为一个异想天开的例子,手持设备上的浏览器通常会比桌面设备上的浏览器呈现页面慢一点,因此在测试每个可能的移动设备后,使用:
'ontouchstart'在document.documentElement中
navigator.vendor===“谷歌公司”
/^Linux armv/.test(navigator.platform)
if(userAgent.indexOf('X11;Linux x86_64')!=-1
&&document.documentElement中的“ontouchstart”
&&/^Linux armv/.test(navigator.platform)
&&_.isChrome){
if((window.outerWidth<500&&window.outerHeight<800)| |(window.outerWidth<800&&window.outerHeight<500)){
//做事。
}
}
Patrick,感谢您的快速回复。android手机没有像苹果设备那样清晰地识别自己,这太糟糕了。detectmobilebrowsers.com看起来正是我想要的让我来看看try@SemanticZen,这里有一个带有检测器的移动浏览器
准备就绪。这是jQuery 2012年7月插件版本。该小提琴版本为5,但请注意,以前的小提琴使用不同的版本。干杯arttronics,谢谢你的小提琴。当我在三星Galaxy SIII上使用提琴时,提琴会将其显示为手机。然而,当我将userAgent作为字符串放入测试时,它就不起作用了。这是一个问题,因为我需要测试不在我桌上的设备。解决我的小提琴问题的方法是,有时三星SIII看起来像手机,有时它不像。有时你会觉得自己像个疯子,有时你不会……哼,试试这个有Firebug Mini的游戏,还有一条你可以查看的console.log消息。您可能需要使用Firebug迷你清除按钮,以确保访问控制台选项卡。然后单击控制台中为特定设备动态填充的对象。这就是说,你会看到所有插件知道你的三星。
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
// some code..
}