【问题标题】:How to detect iOS simulator in JavaScript如何在 JavaScript 中检测 iOS 模拟器
【发布时间】:2019-06-21 12:51:52
【问题描述】:

我正在尝试检测 Safari 是在真正的 iOS 设备上还是在 iOS 模拟器(X 代码)中运行。

我需要在网站上使用此检测。似乎可以在 iOS 应用程序中检测到这一点,但我确实需要在网站上使用它,所以它只是 JavaScript / PHP。

我尝试比较真实 iOS 设备和模拟 iOS 设备上的整个 navigator JS 变量。而且我没有发现任何区别。

也许有一些 JavaScript 函数在 iOS 模拟器上的工作方式不同?或者我可以尝试访问一些传感器?

装有 iOS 12.3.1 的真 iPad:

{
  "plugins": {},
  "mimeTypes": {},
  "cookieEnabled": true,
  "standalone": false,
  "geolocation": {},
  "mediaDevices": {},
  "webdriver": false,
  "appCodeName": "Mozilla",
  "appName": "Netscape",
  "appVersion": "5.0 (iPad; CPU OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/15E148 Safari/604.1",
  "platform": "iPad",
  "product": "Gecko",
  "productSub": "20030107",
  "userAgent": "Mozilla/5.0 (iPad; CPU OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/15E148 Safari/604.1",
  "vendor": "Apple Computer, Inc.",
  "vendorSub": "",
  "language": "en-US",
  "languages": [
    "en-US"
  ],
  "onLine": true,
  "serviceWorker": {}
}

iOS 模拟器中的 iOS 11.2:

{
  "plugins": {},
  "mimeTypes": {},
  "cookieEnabled": true,
  "standalone": false,
  "geolocation": {},
  "mediaDevices": {},
  "webdriver": false,
  "appCodeName": "Mozilla",
  "appName": "Netscape",
  "appVersion": "5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1",
  "platform": "iPad",
  "product": "Gecko",
  "productSub": "20030107",
  "userAgent": "Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1",
  "vendor": "Apple Computer, Inc.",
  "vendorSub": "",
  "language": "en-US",
  "languages": [
    "en-US"
  ],
  "onLine": true
}

上面的区别在于serviceWorker这个变量,但原因是它只在iOS 11.3中添加。

如果您有小费,请告诉我。

【问题讨论】:

    标签: javascript ios safari simulator


    【解决方案1】:
    if (typeof window.ontouchstart != 'undefined') {
      // iOS specific logic
    }
    

    【讨论】:

    • 这不会检测它是否是 X Code iOS 模拟器。仅当您在 Google Chrome 中使用设备仿真时它才有效,这不是这里的问题。
    • 这似乎是真的......您可能难以检测到这一点,因为模拟器的重点是尽可能地表现得像物理设备一样。
    猜你喜欢
    • 2013-05-24
    • 2014-12-26
    • 2015-07-09
    • 2015-05-27
    • 2011-10-15
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多