在投票重复之前:
请阅读下面的完整问题。我在那里解释了为什么“如何检测移动设备?” 这里不是一个例子。
问题(以及为什么这不是简单地否定移动开发检测):
有很多关于“如何使用 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% 确定它是非移动设备时我才会使用react,当我不确定时,我不想采取任何步骤(或者我假设它是移动设备)。
这个公式看起来怎么样?针对 Windows
进行测试是否安全(Windows Phone 或类似的东西也可以使用该文字?)? Mac、Linux PC 和其他电脑怎么样?
最佳答案
这取自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/它具有几乎完整的移动设备检测(即使是不太受欢迎的设备)。
关于javascript - 使用 JavaScript 检测非移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717720/