请阅读以下完整问题。我解释了为什么“如何检测移动设备?” 不是这里的案例。
有很多关于“如何使用JavaScript检测移动设备?”的问题(最好的之一,如果您正在寻找它:What is the best way to detect a mobile device in jQuery?),但我想要要求提供一些不同的东西:“如何使用JavaScript检测非移动设备?”。
你可能会认为我什么时候可以进行这样的移动检测:
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile
|Opera Mini/i.test(navigator.userAgent)){
alert('mobile');
}
我可以在if
内的声明之前加上否定,这将检查非移动设备。 不是。
上面的代码检测到多个版本的移动设备。对于所有未被识别的设备,我们无法100%确定它们不是移动设备。 如果 userAgent
包含其中一个类型文字(webOS, iPone
等),那肯定是移动设备。 如果不是,可以采取两种方式:
因此,我想为非移动设备(Linux / Windows PC,Mac等)编写测试,而不是否定对移动设备的测试。这样,如果结果为真,我将100%确定我处理的是非移动设备。在另一种情况下 - 它是相当移动的,但它只是强烈的假设。
所以基本上,我只想在我100%确定它是非移动设备时做出反应,当我不确定时,我不想采取任何措施(或者我会假设它是移动设备)。
那个公式怎么样?对Windows
进行测试是安全的(Windows Phone或类似的东西也可以使用该文字吗?)?那么Mac,Linux PC和其他人呢?
答案 0 :(得分:-1)
这取自here:
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;
};
它不是很优雅,但您可以根据自己的喜好添加/删除它。
第二个答案,虽然我了解到您正在寻找非移动侦测,但您也可以使用http://detectmobilebrowsers.com/几乎完整的移动设备检测(即使不太受欢迎)。