用JS检测iPhone SE设备型号

时间:2016-11-14 10:21:38

标签: javascript iphone

我的JS webapp中有一个错误,似乎只发生在iPhone SE上,而不是其他型号上。有没有办法检测特定的设备型号?我考虑过使用屏幕尺寸,但不幸的是iPhone SE和iPhone 5都共用同一个屏幕(报告为320 x 568),所以我无法区分这两者。

http://hgoebl.github.io/mobile-detect.js/这样的JS检测库似乎无法解决问题。

如何使用JS检测iPhone SE(无论iOS版本)?

附录:

用户代理似乎没有帮助,它只针对iOS版本,而不是设备。

iPhone SE,iOS 10:

Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A345 Safari/602.1

iPhone 5,iOS 6:

Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25

iPhone 5s,iOS 7:

Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53

1 个答案:

答案 0 :(得分:1)

您可以通过JavaScript检查CPU速度来检测差异。

Here is an example这样做,虽然他们做错了。而是使用最小执行时间的度量,因为平均值被大延迟(后台任务,垃圾收集等)导致的长尾破坏。

但是,根据我的经验,如果试图避免过时的设备(或版本)中的错误,您应该只嗅探模型等。如果您有一个在最近的设备/版本中表达自己的错误,很可能会在未来的设备/版本中发生。当我在较新的设备上发现iOS中的显示错误时,我认为这是由于更快的CPU(可能是由于多线程)而导致的竞争条件。因为未来的设备具有更快的CPU,所以在代码进入维护之后,任何错误都会变得更糟,这不是你想要的。

相反,我尝试找到该错误的解决方法(适用于较新设备的解决方法)。

如果可以简化且可重复,我建议您发送错误报告。虽然根据我的经验,Apple和Microsoft在修复浏览器中报告的错误方面很糟糕,无论这些错误有多重要,研究得当或编写得很好(Apple只提供零反馈而不修复错误。微软提供反馈然后关闭随机原因的错误没有修复 - IE / Edge团队可以避免修复错误。我也很高兴Chromium团队在修复报告的错误(甚至是复杂和主观的错误)方面表现得非常好。感谢谷歌。