您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

检测设备是否为iOS

检测设备是否为iOS

我不喜欢User Agent嗅探,但是这是你的处理方式:

var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;

另一种方法是依靠navigator.platform

var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);

iOS将是truefalse

微软在IE11中注入了iPhone一词,userAgent以试图以某种方式欺骗Gmail。因此,我们需要排除它。关于这方面更多的信息在这里和这里。

以下是IE11的更新userAgent(适用于Windows Phone 8.1的Internet Explorer更新):

Mozilla / 5.0(移动; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0;触摸; rv:11.0; IEMobile / 11.0; NOKIA; Lumia 930),例如iPhone OS 7_0_3 Mac OS X AppleWebKit / 537(KHTML,例如Gecko)移动Safari / 537

无需使用正则表达式即可轻松添加更多设备:

function iOS() {

  var iDevices = [
    'iPad Simulator',
    'iPhone Simulator',
    'iPod Simulator',
    'iPad',
    'iPhone',
    'iPod'
  ];

  if (!!navigator.platform) {
    while (iDevices.length) {
      if (navigator.platform === iDevices.pop()){ return true; }
    }
  }

  return false;
}

iOS()将是truefalse

注意:无论navigator.userAgent并且navigator.platform可以由用户或浏览器扩展伪造。

检测iOS版本的最常见方法是通过User Agent字符串进行解析。但是也有特征检测推论* ;

我们知道,一个事实,history API在引进的iOS4 - matchMedia API在iOS5中 - webAudio API在iOS6的 - WebSpeech API在iOS7等..

注意:以下代码不可靠,如果在更新的iOS版本中不推荐使用这些HTML5功能,则这些代码将中断。你被警告了!

function iOSversion() {

  if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
    if (!!window.indexedDB) { return 'iOS 8 and up'; }
    if (!!window.SpeechSynthesisUtterance) { return 'iOS 7'; }
    if (!!window.webkitAudioContext) { return 'iOS 6'; }
    if (!!window.matchMedia) { return 'iOS 5'; }
    if (!!window.history && 'pushState' in window.history) { return 'iOS 4'; }
    return 'iOS 3 or earlier';
  }

  return 'Not an iOS device';
}
其他 2022/1/1 18:15:43 有438人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶