我正在寻找一个函数,返回一个布尔值,如果用户正在使用移动浏览器与否。
我知道我可以使用导航器。userAgent并使用regex编写该函数,但是用户代理对于不同的平台来说太复杂了。我怀疑匹配所有可能的设备是否容易,我认为这个问题已经解决了很多次,所以应该有某种完整的解决方案来完成这样的任务。
我正在看这个网站,但不幸的是,脚本是如此神秘,我不知道如何使用它为我的目的,这是创建一个返回true/false的函数。
我正在寻找一个函数,返回一个布尔值,如果用户正在使用移动浏览器与否。
我知道我可以使用导航器。userAgent并使用regex编写该函数,但是用户代理对于不同的平台来说太复杂了。我怀疑匹配所有可能的设备是否容易,我认为这个问题已经解决了很多次,所以应该有某种完整的解决方案来完成这样的任务。
我正在看这个网站,但不幸的是,脚本是如此神秘,我不知道如何使用它为我的目的,这是创建一个返回true/false的函数。
当前回答
这里有一个简单的解决方案,来自facebook的弹弓
const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
if (isMobile) {
/* your code here */
}
其他回答
IE10+解决方案仅使用matchMedia:
const isMobile = () => window.matchMedia('(max-width: 700px)').matches
isMobile()返回布尔值
像这样的怎么样?
if(
(screen.width <= 640) ||
(window.matchMedia &&
window.matchMedia('only screen and (max-width: 640px)').matches
)
){
// Do the mobile thing
}
//true / false
function isMobile()
{
return (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) );
}
您还可以按照本教程来检测特定的手机。请点击这里。
我认为这才是真正的保护方案。
测试在Chrome和Firefox,移动和桌面。
var ___isMobileDevice;
const isMobileDeviceCheck = () => {
const mobileOsRegExp = "(Android|webOS|iPhone|iPod)";
if(screen.width < 500 || navigator.userAgent.match('/'+mobileOsRegExp+'/i')) {
___isMobileDevice = true;
}
if (___isMobileDevice) {
if (typeof window.orientation === "undefined") {
___isMobileDevice = false;
}
}
if (typeof navigator.userAgentData != "undefined" && !navigator.userAgentData.mobile) {
___isMobileDevice = false;
}
if ( typeof window.orientation !== "undefined" && ___isMobileDevice ) {
if (window.navigator.maxTouchPoints > 1 && (navigator.userAgentData.mobile || localStorage.mobile || 'ontouchstart' in document)) {
// mobile device found
console.log('Is mobile device!');
}
}
}
window.onresize = () => {
isMobileDeviceCheck();
}
isMobileDeviceCheck();
PS:作为浏览器扩展的Useragent切换器不能用这段代码欺骗你。
我建议你去http://wurfl.io/看看
简而言之,如果你导入一个很小的JS文件:
<script type='text/javascript' src="//wurfl.io/wurfl.js"></script>
你将得到一个JSON对象,看起来像:
{
"complete_device_name":"Google Nexus 7",
"is_mobile":true,
"form_factor":"Tablet"
}
(当然,这是假设你使用的是Nexus 7),你将能够做以下事情:
if(WURFL.form_factor == "Tablet"){
//dostuff();
}
这就是你要找的。
免责声明:我为提供这项免费服务的公司工作。谢谢。