使用JavaScript检测非移动设备 在投票表决之前:
请阅读下面的完整问题。我在这里解释了为什么“如何检测移动设备?”中的任何一个在这里都不适用 问题(为什么这不是对移动设备检测的简单否定): 关于“如何使用JavaScript检测移动设备?”有很多问题(如果您正在寻找,最好的问题之一是:),但我想问一些不同的问题:“如何使用JavaScript检测非移动设备?” 你可能会想,当我可以像这样进行移动检测时:使用JavaScript检测非移动设备 在投票表决之前:,javascript,windows,mobile,user-agent,Javascript,Windows,Mobile,User Agent,请阅读下面的完整问题。我在这里解释了为什么“如何检测移动设备?”中的任何一个在这里都不适用 问题(为什么这不是对移动设备检测的简单否定): 关于“如何使用JavaScript检测移动设备?”有很多问题(如果您正在寻找,最好的问题之一是:),但我想问一些不同的问题:“如何使用JavaScript检测非移动设备?” 你可能会想,当我可以像这样进行移动检测时: if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile |Opera Mini/
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile
|Opera Mini/i.test(navigator.userAgent)){
alert('mobile');
}
我可以在if
中的语句前面加上否定,这就是检查非移动设备不是真的。
上面的代码检测多个版本的移动设备。对于所有未被识别的设备,我们无法100%确定它们不是移动设备如果用户代理
包含一个键入的文本(webOS、iPone
等),那么它肯定是一个移动设备如果不是,它可以有两种方式:
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;
};