在没有用户代理嗅探的情况下检测移动浏览器[关闭]

Posted

技术标签:

【中文标题】在没有用户代理嗅探的情况下检测移动浏览器[关闭]【英文标题】:detecting mobile browser without user agent sniffing [closed] 【发布时间】:2013-01-17 12:54:44 【问题描述】:

哪种方法更可靠地检测移动浏览器?

UA 嗅探

Jquery 的width()

据我了解,UA 嗅探不是很可靠。

我需要根据查看页面的移动设备的宽度更改页面的 html。我不能单独使用媒体查询来做到这一点。

【问题讨论】:

您是否因为屏幕狭窄而改变某些元素的外观?如果是这样,请使用媒体查询。如果您正在更改元素的行为方式(例如,移动设备没有鼠标,因此它们无法悬停),那么您最好检测功能(例如,它是否支持触摸事件?)并相应地进行调整.移动设备分辨率越来越大:宽度不再是检测它们的准确方法。 我需要根据宽度更改html。我不能单独使用媒体查询来做到这一点。 很遗憾不是一个选项。 【参考方案1】:

您可以使用 mobile detect JS library 来执行此操作。注意警告:

// WARNING: 
//   These javascript-based device detection features may ONLY work 
//   for the newest generation of smartphones, such as the iPhone, 
//   android and Palm WebOS devices.
//   These device detection features may NOT work for older smartphones 
//   which had poor support for JavaScript, including 
//   older BlackBerry, PalmOS, and Windows Mobile devices. 
//   Additionally, because JavaScript support is extremely poor among 
//   'feature phones', these features may not work at all on such devices.
//   For better results, consider using a server-based version of this code, 
//   such as Java, APS.NET, php, or Ruby.

【讨论】:

【参考方案2】:

您刚刚回答了您自己的问题 - 您想要采用用户的浏览器或他们的设备宽度。

如果您想在宽度小于 WIDTH_CONSTANT 时执行某些操作,请使用 mediaQueries,或使用 javascript 检查尺寸。

现在不建议在客户端进行用户代理嗅探,因为您需要寻找您感兴趣的功能,而不是嗅探用户代理。

所以在你的情况下,我几乎可以肯定地说你应该寻找设备宽度。

附:如果您在服务器端进行交易,我认为用户代理嗅探将是了解用户正在使用的设备的唯一方法。

【讨论】:

我想在特定的浏览器宽度或设备宽度上运行 js 代码。基本上,如果媒体查询启动,我希望 js 做点什么。【参考方案3】:

有两种选择:

1- 用户代理嗅探。 2-mobile检测JS库

【讨论】:

以上是关于在没有用户代理嗅探的情况下检测移动浏览器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

理解性能的奥秘——应用程序中慢,SSMS中快——不总是参数嗅探的错

浏览器嗅探是啥意思?

使用“桌面模式”浏览器仅检测移动用户

关于浏览器嗅探

如何让迅雷是视频嗅探功能在谷歌内核的浏览器上也能像在IE内核浏览器上一样的工作呀?

如何检查网站是不是缺少阻止内容类型嗅探的标题