通过Javascript检测移动设备

通过Javascript检测移动设备,javascript,android,jquery,Javascript,Android,Jquery,关于这个问题: 在新版android sdk中,本机浏览器不再返回代号android。 navigator.userAgent返回如下内容: mozilla/5.0 X11;Linux x86_64 AppleWebkit7534.24 KHTML,如Gecko Chrome/11.0.696.34 Safari7534.24 有什么建议吗?这是一款带有HTC One S的手机,当前Android版本为4.1.1,请参见。您确定没有在桌面模式下查看吗?股票浏览器和其他许多浏览器根据浏览模式有两个

关于这个问题:

在新版android sdk中,本机浏览器不再返回代号android。 navigator.userAgent返回如下内容:

mozilla/5.0 X11;Linux x86_64 AppleWebkit7534.24 KHTML,如Gecko Chrome/11.0.696.34 Safari7534.24


有什么建议吗?这是一款带有HTC One S的手机,当前Android版本为4.1.1,请参见。您确定没有在桌面模式下查看吗?股票浏览器和其他许多浏览器根据浏览模式有两个不同的用户代理。

永远不要使用浏览器嗅探!使用特征检测。有一个名为的javascript库,可以根据用户客户端的功能执行操作。

是的。。。这可能是因为您的浏览器处于桌面模式

当显示在小屏幕上时,您可能希望显示页面的某些移动版本,因此您可以尝试:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<script type="text/javascript">  
  if ((screen.width < 480) || (screen.height < 480)) {    
    location.replace('/m/');
  }  
</script>
浏览器需要视口元标记来报告实际屏幕大小

编辑: 根据需要,在检查屏幕大小之前,您可能需要等待一段时间,以便浏览器赶上进度,因此我想最好使用:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<script type="text/javascript">  
  setTimeout(function() {
               if ((screen.width < 480) || (screen.height < 480)) {    
                 location.replace('/m/');
               }  
             }, 200);
</script>

这是因为您使用的浏览器来自mozilla或chrome,而不是android的默认浏览器。请尝试浏览器/设备检测的功能检测instaid。它要可靠得多。检查