javascript - 是否有正确/推荐的方法来检测我在手机上运行的 UWP 应用程序?

标签 javascript winjs win-universal-app

使用 JavaScript 试用 Windows 通用应用程序时,我注意到 WinJS.Utilities.isPhone属性不再可用,这是有道理的,因为没有理由在运行时请求它。

出于测试目的,我确实想知道是否有适当的方法来检测我的应用运行的设备。

编辑:我的问题与检测移动浏览器无关。我说的是适用于 Window 10 的全新通用 Windows 应用程序,它可以在手机、台式机、平板电脑、Xbox、HoloLEns、IoT 设备等上运行。 WinJS 有一个属性可以告诉我是否在手机上运行。那个属性(property)现在没有了。由于与“检测移动浏览器”重复,请不要关闭此问题。那不是我需要的。

最佳答案

警告:由于硬件的动态特性,任何形式的设备检测都是脆弱的——明天可能会出现一种新设备,它会破坏您应用的逻辑。最好将这些 API 仅用于遥测/分析,而不是触发运行时行为。

通常情况下,您真正​​想知道的是设备或应用的某些固有地与设备系列相关的属性(此设备是否支持SystemTray API?是否有连接键盘?窗口宽度是否超​​过500px?等)。

也就是说,在 Windows 10 中,您可以通过 AnalyticsInfo.VersionInfo.DeviceFamily 查询 DeviceFamily它会告诉您诸如“移动”或“桌面”或“Xbox”等信息(其中“移动”可以是任何类别的设备 - 手机、平板电脑等)。还有一个 DeviceForm 属性可能会有所帮助,但是您不能在运行时真正依赖它来确定性地说您正在“手机”上运行。

所以基本上答案是“您可以使用这些 API 进行遥测,但不要将任何值硬编码到您的应用程序中,以免在新设备上市时出现故障。”至少,始终确保您处理返回值不是您已知的先验值的情况。

关于javascript - 是否有正确/推荐的方法来检测我在手机上运行的 UWP 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055312/

相关文章:

javascript - 带有类名和值的目标输入

javascript - AngularJS 服务函数不返回 promise

css - -ms-grid-row-align 属性中的可能错误

c# - 如何处理硬件按钮。在 UWP 中按下后退?

javascript - Leaflet - 将功能添加到 json 对象并将结果放在 map 上

javascript - Angular - 使用 ngFor 创建 Accordion 菜单。需要自动关闭并在单击时打开另一个

javascript - Windows 应用程序开发 - ListView 检索数据

javascript - 为什么将我的 div 的位置设置为 fixed 会干扰弹出的 div?

c# - UWP 中的 itemscontrol 不绑定(bind)到 observablecollection 项目的坐标

uwp - 在 UWP/C++ 的代码隐藏中加载 ResourceDictionary