是否有一种优雅的方式来检测移动浏览器?

时间:2012-01-12 01:26:57

标签: javascript asp.net mobile

我有a website,当您通过移动浏览器访问时,可以重定向到a different page

我一直无法想出可靠地检测移动设备的方法。目前,我这样的Javascript代码:

if (document.documentElement.clientWidth < 680 || 
    document.documentElement.clientHeight < 450) 
  location.href = "handheld.aspx";

如果broswer大小小于桌面版本支持的大小,则重定向。问题在于,一些移动浏览器开始缩小,并且具有与桌面设备类似的浏览器尺寸。

我已经研究过这个,我主要找到的解决方案涉及嗅探用户代理sting并在现有移动设备中查看一堆字符串。如果可能的话,我想避开那条路线,因为它看起来非常凌乱,并且在将来出现新设备时将会中断。

检测移动浏览器的方式是否较少,或者至少有一种更可靠的检测屏幕尺寸的方式?

4 个答案:

答案 0 :(得分:3)

您必须决定最常尝试检测移动浏览器的哪个方面。您是否尝试检测屏幕大小并重定向到适合较小屏幕的网站设计。如果是,您可以使用window.screendoc here)。

如果您尝试在移动浏览器中检测特定功能或功能不足,则应使用功能检测来确定指定的功能是否存在。这比检测浏览器用户代理更好。

答案 1 :(得分:0)

没有。您无论是检查屏幕大小还是用户代理

答案 2 :(得分:0)

如果您想对此进行简单的修复,可以尝试handsetdetection javascript它使您能够为重定向设置规则和条件,例如屏幕大小,供应商,操作系统,浏览器,显示宽度和高度。如果您喜欢统计数据,HD会提供出色的分析报告,您可以使用它来微调重定向向您的网站用户/访问者提供的方式。

答案 3 :(得分:0)

在新屏幕尺寸左右弹出的世界中,基于屏幕尺寸进行检测是一场失败的战斗。您应该使用服务器端检测并相应地修改视图。使用像Device Atlas或WURFL这样的服务将为您提供面向未来的能力,并为您提供更多您可能自己完成的功能。

根据记录,从性能角度来看,基于JS的移动重定向是最糟糕的解决方案,应该避免。