使用JavaScript试用Windows Universal应用程序我注意到WinJS.Utilities.isPhone
属性不再可用,这是有道理的,因为在运行时没有理由要求它。
如果有正确的方法来检测我的应用运行的设备,我确实只想知道测试目的。
编辑:我的问题不是检测移动浏览器。我正在谈论一个全新的适用于Window 10的通用Windows应用程序,可以在手机,台式机,平板电脑,Xbox,HoloLEns,物联网设备等上运行。 WinJS有一个属性可以告诉我我是否在电话上运行。那个属性现在已经消失了。由于重复使用"检测移动浏览器",请不要关闭此问题。那不是我需要的。
答案 0 :(得分:11)
警告:由于硬件的动态特性,任何形式的设备检测都是脆弱的 - 明天会出现一个新设备,这会破坏应用程序的逻辑。最好将这些API仅用于遥测/分析,而不是触发运行时行为。
通常情况下,您真正想知道的是设备的某些属性或不与设备系列固有关联的应用(此设备是否支持SystemTray
API ?是否附有键盘?窗口宽度是否超过500p?等。)
也就是说,在Windows 10中,您可以通过AnalyticsInfo.VersionInfo.DeviceFamily
查询DeviceFamily
,它会告诉您类似于"移动"或"桌面"或" Xbox"等等(#34;移动"可以是任何类别的设备 - 手机,平板电脑等)。还有一个可能有用的属性DeviceForm
,但您又无法在运行时真正依赖它来确定性地说您正在运行"电话。"
所以基本上答案是"您可以使用这些API进行遥测,但不要将任何值硬编码到您的应用中,以免新设备上市时中断。"至少,始终确保您处理的情况是返回的值不是您所知道的先验。
答案 1 :(得分:1)
您还可以查看以下链接 http://www.abeautifulsite.net/detecting-mobile-devices-with-javascript/ http://www.sitepoint.com/detect-mobile-devices-jquery/
当然在stackoverflow上有一个类似的帖子,答案很好
谈到Windows 10,从Winjs Github repo中提取,这就是答案。
https://github.com/winjs/winjs/issues/601#issuecomment-87137485
答案 2 :(得分:0)
有许多JS库可以检测使用哪个平台/设备。
我个人喜欢使用这个lib:https://github.com/kaimallea/isMobile
然后,您将能够以这种方式检测移动设备:
isMobile.apple.tablet
isMobile.android.phone
等等。
如果您有自己想要实现此类lib的想法,请记住,需要一些努力才能使其保持最新状态,因为检测移动设备的方式可能会随着时间的推移而发生变化。
通常,检测用户设备的常用方法是检查查询标头。
但请记住,您不能完全依赖此信息 - 标题可能很容易修改。有关更多信息的Google User Agent。
所以“为手机用户省略身份验证过程”非常坏主意