Javascript 用JS检测iphonese设备模型

Javascript 用JS检测iphonese设备模型,javascript,iphone,Javascript,Iphone,我的JS webapp中有一个bug,似乎只在iPhone SE上出现,而在其他机型上没有。有没有办法检测特定的设备型号?我曾考虑过使用屏幕大小,但不幸的是,iPhone SE和iPhone 5都使用相同的屏幕(据报道为320 x 568),因此我无法区分两者 像这样的JS检测库似乎不起作用 如何使用JS检测iPhone SE(无论iOS版本如何? 增编: 用户代理在这里似乎没有帮助,它只针对iOS版本,而不是设备 iPhone SE、iOS 10: Mozilla/5.0(iPhone;CPU

我的JS webapp中有一个bug,似乎只在iPhone SE上出现,而在其他机型上没有。有没有办法检测特定的设备型号?我曾考虑过使用屏幕大小,但不幸的是,iPhone SE和iPhone 5都使用相同的屏幕(据报道为320 x 568),因此我无法区分两者

像这样的JS检测库似乎不起作用

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

增编:

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

iPhone SE、iOS 10:

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

iPhone 5、iOS 6:

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

iPhone 5s、iOS 7:


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

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

尽管他们做得不正确,但他们还是会这么做。取而代之的是使用最短执行时间的度量,因为大延迟(后台任务、垃圾收集等)导致的长尾会破坏平均值

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

相反,我试图为这个bug找到一个解决方法(一个在较新设备上工作的解决方法)


我建议你发送一个bug报告,如果它是简单和可重复的。尽管根据我的经验,苹果和微软在修复浏览器中报告的错误方面表现糟糕,不管这些错误有多么重要,研究得多么透彻,写得多么好(苹果只给出零反馈,不修复漏洞。微软给出反馈,然后出于随机原因关闭漏洞而不进行修复——IE/Edge团队尽可能避免修复漏洞)。我还高兴地惊讶于Chromium团队在修复报告的漏洞(甚至是复杂和主观的漏洞)方面的出色表现;感谢谷歌。

也许可以看看用户代理?@Steve用户代理没有任何东西可以帮助识别设备型号。我已经更新了答案