Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript检测非移动设备 在投票表决之前:_Javascript_Windows_Mobile_User Agent - Fatal编程技术网

使用JavaScript检测非移动设备 在投票表决之前:

使用JavaScript检测非移动设备 在投票表决之前:,javascript,windows,mobile,user-agent,Javascript,Windows,Mobile,User Agent,请阅读下面的完整问题。我在这里解释了为什么“如何检测移动设备?”中的任何一个在这里都不适用 问题(为什么这不是对移动设备检测的简单否定): 关于“如何使用JavaScript检测移动设备?”有很多问题(如果您正在寻找,最好的问题之一是:),但我想问一些不同的问题:“如何使用JavaScript检测非移动设备?” 你可能会想,当我可以像这样进行移动检测时: if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile |Opera Mini/

请阅读下面的完整问题。我在这里解释了为什么“如何检测移动设备?”中的任何一个在这里都不适用

问题(为什么这不是对移动设备检测的简单否定): 关于“如何使用JavaScript检测移动设备?”有很多问题(如果您正在寻找,最好的问题之一是:),但我想问一些不同的问题:“如何使用JavaScript检测非移动设备?”

你可能会想,当我可以像这样进行移动检测时:

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

     alert('mobile');
}
我可以在
if
中的语句前面加上否定,这就是检查非移动设备不是真的。

上面的代码检测多个版本的移动设备。对于所有未被识别的设备,我们无法100%确定它们不是移动设备如果
用户代理
包含一个键入的文本(
webOS、iPone
等),那么它肯定是一个移动设备如果不是,它可以有两种方式:

  • 它不是移动设备
  • 这是一款我们没有列出的移动设备(错误、外来设备、编写代码后发布的设备等)
  • 因此,我想为非移动设备(Linux/Windows PC、Mac等)编写一个测试,而不是否定移动设备的测试。那样的话,如果结果是真的,我将100%确信我处理的是非移动设备。在另一种情况下,它相当灵活,但这只是一个强有力的假设

    所以基本上,我只想在100%确定它是非移动设备时做出反应,而当我不确定它时,我不想采取任何步骤(或者我会假设它是移动设备)

    这个公式看起来怎么样?在
    Windows上测试是安全的(Windows Phone或类似的东西也可以使用该文字?)?Mac、Linux PC和其他设备的情况如何?

    这是从:

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


    第二个答案是,虽然我知道您专门在寻找非移动设备检测,但您也可以使用几乎完成移动设备检测的设备(即使不太流行)。

    抱歉,已删除。我的错。@Avisho没问题。对于任何其他人都认为它是“如何检测移动设备”的问题的复制品-请阅读我的问题——我给出了论点,为什么这里不是这样的。@ PolGraphic,为什么你需要检测它是一个移动设备吗?我认为基于浏览器检测修改网站仍然是一种不好的做法,相反,你应该使用功能支持detection@AeroX因为在我的例子中,这不是关于功能支持,而是一些毫无疑问不可能或很难检测到的属性。例如(但不仅限于):每英寸像素数,实际屏幕大小(英寸或厘米)。在PC机上,我可以假设我处理的是“可接受”的屏幕大小(以厘米为单位)。我不能依赖px分辨率(一些移动设备开发人员有很好的px分辨率,屏幕仍然比标准PC小)。我希望我已经解释过了,我不想从中做起一本书;)另外,我检测到非移动设备(非移动设备)和其他情况,我假设它是移动设备。这不是真正的情况。您的代码检测浏览器,而不考虑移动/非移动。使用detectmobilebrowsers.com和negation只是我所发布的代码的更复杂版本。尽管如此,我还是想针对非移动平台(Mac、Windows PC、Linux PC等)进行测试,而不是否定移动平台列表(为什么?我在问题中指出了差异)。不管怎样,我对浏览器测试(Firefox、IE、Opera等)不感兴趣,也许是这样的<代码>var OSName=“未知操作系统”;如果(navigator.appVersion.indexOf(“Win”)!=-1)OSName=“Windows”;if(navigator.appVersion.indexOf(“Mac”)!=-1)OSName=“MacOS”;if(navigator.appVersion.indexOf(“X11”)!=-1)OSName=“UNIX”;if(navigator.appVersion.indexOf(“Linux”)!=-1)OSName=“Linux”
    Windows Phone(移动设备)“Win”是否也会返回true?只是问一下,因为我现在不能查。
    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;
    };