function isMobile() {
// 检查屏幕宽度,假定平板或更大尺寸的设备宽度大于 756px
if (window.innerWidth > 756) {
return false;
}
// 用户代理关键字列表,可以根据需要增减
var mobileKeywords = ["Android", "webOS", "iPhone", "iPad", "iPod", "BlackBerry", "IEMobile", "Opera Mini"];
// 检查用户代理字符串是否包含上述任一关键字
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
for(var i = 0; i < mobileKeywords.length; i++) {
if (userAgent.indexOf(mobileKeywords[i]) > -1) {
return true;
}
}
// 特别针对Windows平板的检测,因为它们可能在用户代理中不包含上述关键字
if (/windows phone/i.test(userAgent)) {
return true;
}
// 最后,额外考虑小尺寸的设备可能是手机
return window.innerWidth <= 756;
}
这个版本的isMobile函数先通过屏幕宽度简单排除大部分非移动设备,然后使用用户代理字符串中特定的关键字来进一步确认。这样,即使是小屏幕的平板或对折设备,在用户代理中没有出现对应的移动设备关键字的情况下,也不会被误判为手机。
由于设备和浏览器环境的不断变化,这种方法仍然不是完全准确的,但它比仅仅基于屏幕尺寸的判断更加灵活和准确些。在实际应用中,可能还需要根据具体情况调整关键字列表或判断逻辑。