在没有用户代理嗅探的情况下检测移动浏览器[关闭]
Posted
技术标签:
【中文标题】在没有用户代理嗅探的情况下检测移动浏览器[关闭]【英文标题】:detecting mobile browser without user agent sniffing [closed] 【发布时间】:2013-01-01 00:34:09 【问题描述】:哪种方法更可靠地检测移动浏览器?
UA 嗅探
Jquery 的width()
据我了解,UA 嗅探不是很可靠。
我需要根据查看页面的移动设备的宽度更改页面的 html。我不能单独使用媒体查询来做到这一点。
【问题讨论】:
您是否因为屏幕狭窄而改变某些元素的外观?如果是这样,请使用媒体查询。如果您正在更改元素的行为方式(例如,移动设备没有鼠标,因此它们无法悬停),那么您最好检测功能(例如,它是否支持触摸事件?)并相应地进行调整.移动设备分辨率越来越大:宽度不再是检测它们的准确方法。 我需要根据宽度更改html。我不能单独使用媒体查询来做到这一点。 很遗憾不是一个选项。 【参考方案1】:有两种选择:
1- 用户代理嗅探。 2-mobile检测JS库
【讨论】:
【参考方案2】:您刚刚回答了您自己的问题 - 您想要采用用户的浏览器或他们的设备宽度。
如果您想在宽度小于 WIDTH_CONSTANT 时执行某些操作,请使用 mediaQueries,或使用 javascript 检查尺寸。
现在不建议在客户端进行用户代理嗅探,因为您需要寻找您感兴趣的功能,而不是嗅探用户代理。
所以在你的情况下,我几乎可以肯定地说你应该寻找设备宽度。
附:如果您在服务器端进行交易,我认为用户代理嗅探将是了解用户正在使用的设备的唯一方法。
【讨论】:
我想在特定的浏览器宽度或设备宽度上运行 js 代码。基本上,如果媒体查询启动,我希望 js 做点什么。【参考方案3】:您可以使用 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.
【讨论】:
以上是关于在没有用户代理嗅探的情况下检测移动浏览器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
理解性能的奥秘——应用程序中慢,SSMS中快——不总是参数嗅探的错