[英]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');
}
我可以将否定语句放在if
和if
语句之前,这将检查非移动设备。 并不是的。
上面的代码检测到多个版本的移动设备。 对于所有无法识别的设备,我们不能100%确保它们不能移动。 如果 userAgent
包含类型文字( webOS, iPone
等)之一,则肯定是移动设备。 如果没有 ,它可以通过两种方式进行:
因此,我不想否定针对移动设备的测试,而是要针对非移动设备(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.