繁体   English   中英

使用JavaScript检测非移动设备

[英]Detecting NON-mobile devices with JavaScript

在对重复进行投票之前:

请阅读下面的完整问题 我在那里解释了为什么“如何检测移动设备”? 这里不是这样

问题(以及为什么它不是对移动开发检测的简单否定):

关于“如何使用JavaScript检测移动设备?”存在很多问题 (最好的方法之一,如果您正在寻找它: 在jQuery中检测移动设备的最佳方法是什么? ),但我想提出一些不同的建议: “如何使用JavaScript检测非移动设备? ”

您可能会认为,当我可以像这样进行移动检测时:

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile
    |Opera Mini/i.test(navigator.userAgent)){

     alert('mobile');
}

我可以将否定语句放在ifif语句之前,这将检查非移动设备。 并不是的。

上面的代码检测到多个版本的移动设备。 对于所有无法识别的设备,我们不能100%确保它们不能移动。 如果 userAgent包含类型文字( webOS, iPone等)之一,则肯定是移动设备。 如果没有 ,它可以通过两种方式进行:

  1. 这不是移动设备
  2. 这是我们未列出的移动设备(错误,异国情调的设备,编写代码后发布的设备等)。

因此,我不想否定针对移动设备的测试,而是要针对非移动设备(Linux / Windows PC,Mac等)编写测试。 这样, 如果结果为真,我将100%确定我处理非移动设备。 在另一种情况下-它相当灵活,但这只是一个强有力的假设

因此,基本上, 我只想在100%确信它是非移动设备时做出反应 ,而当我不确定时,我不想采取任何步骤(否则我将假定它是移动设备) 。

这个公式看起来如何? Windows进行测试是安全的(Windows Phone或类似的工具也可以使用该文字吗?)? Mac,Linux PC和其他呢?

这是从这里获取的

var BrowserDetect = function() {
    var nav = window.navigator,
    ua = window.navigator.userAgent.toLowerCase();
    // detect browsers (only the ones that have some kind of quirk we need to work around)
    if (ua.match(/ipad/i) !== null)
        return "iPod";
    if (ua.match(/iphone/i) !== null)
        return "iPhone";
    if (ua.match(/android/i) !== null)
        return "Android";
    if ((nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null))
        return "IE";
    if (ua.match(/chrome/gi) !== null)
        return "Chrome";
    if (ua.match(/firefox/gi) !== null)
        return "Firefox";
    if (ua.match(/webkit/gi) !== null)
        return "Webkit";
    if (ua.match(/gecko/gi) !== null)
        return "Gecko";
    if (ua.match(/opera/gi) !== null)
        return "Opera";
    //If any case miss we will return null
    return null;
};

它不是很优雅,但是您可以根据自己的喜好添加/删除它。

第二个答案是,虽然我了解到您正在专门寻找NON移动检测,但您也可以使用http://detectmobilebrowsers.com/ ,该设备几乎可以完成移动设备检测(即使不那么流行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM