【问题标题】:How to detect iPhone 6 and 6 Plus via JavaScript/jQuery (or PHP)?如何通过 JavaScript/jQuery(或 PHP)检测 iPhone 6 和 6 Plus?
【发布时间】:2015-06-05 11:29:24
【问题描述】:

有没有办法通过 JavaScript 或 PHP 检测 iPhone 6 和 6 Plus?我需要 jQuery 中条件 if else 的布尔值。它适用于 Safari(或 UIWebView)中的 Web 应用程序。我试图检测屏幕分辨率,但由于元视口或像素比率(我真的不知道),iPhone 5、iPhone 6 和 6 Plus 上的输出值是相同的。提前致谢!

【问题讨论】:

  • 嗯,为什么要投反对票? o_O
  • 这应该会给你一些想法--stackoverflow.com/questions/8309998/… 这应该会告诉你正确的媒体查询:stackoverflow.com/questions/25759046/…
  • 感谢您的意见。视网膜检测无法工作,因为它不会在 iPhone 4 和 iPhone 6 之间产生差异。(或者我错了......)
  • 我发现的唯一方法是在 Objective-C 中创建一个布尔值,并通过 JavaScript 使用 stringByEvaluatingJavaScriptFromString 调用布尔结果。它可以工作,但我更喜欢完整的 JS 方式...... Snif。
  • 你不能在媒体查询中添加一个类,例如在我提供的仅针对 6 和 6+ 的链接中使用的类,所以添加 .iphone6 {display:block}; - 然后将同一个类放在非- 媒体查询部分为 display:none - 然后使用 javascript 说“如果这个类是 display:block - 然后是 yadayada,否则是 yadayada”??

标签: javascript jquery ios iphone viewport


【解决方案1】:

navigator.userAgent 将返回

"Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4" for iphone 6 and iphone6 plus

navigator.userAgent 将返回“Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53”

这样您就可以使用 navigator.userAgent 检测 iphone5 和 iphone6

【讨论】:

  • 我不确定是否可以使用用户代理。未指定 iPhone 型号。如果用户更新他的 iOS 或 Safari 版本,用户代理也会改变。
【解决方案2】:

使用 javascript 将是两种方法的组合:

function iPhoneVersion() {
  var iHeight = window.screen.height;
  var iWidth = window.screen.width;
  if (iWidth === 320 && iHeight === 480) {
    return "4";
  }
  else if (iWidth === 375 && iHeight === 667) {
    return "6";
  }
  else if (iWidth === 414 && iHeight === 736) {
    return "6+";
  }
  else if (iWidth === 320 && iHeight === 568) {
    return "5";
  }
  else if (iHeight <= 480) {
    return "2-3";
  }
  return 'none';
}

function isIphone() {
  return !!navigator.userAgent.match(/iPhone/i);
}

所以您需要做的就是测试它是否是 Iphone,然后获取版本:

if ( isIphone() && iPhoneVersion() === "6"){
  //code..
}

【讨论】:

  • iPhone 6、7、8 都具有相同的分辨率 375 x 667
【解决方案3】:

如果你只需要 iphone 6 或 iphone 6 plus 来检测,使用它:

    function isIphoneUp6() {
        var isIPhone = false;
        isIPhone = !!navigator.userAgent.match(/iPhone/i);

        if(isIPhone){
            var iHeight = window.screen.height;
            var iWidth = window.screen.width;
            if ((iWidth === 375 && iHeight === 667) || (iWidth === 414 && iHeight === 736)) {
                return true;
            }
        } else {        
            return false;
        }
    }


    if ( isIphoneUp6()){
      // your code
    }

【讨论】:

  • iPhone 6、7、8 都具有相同的分辨率 375 x 667
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 2015-03-25
  • 1970-01-01
相关资源
最近更新 更多