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函数先通过屏幕宽度简单排除大部分非移动设备,然后使用用户代理字符串中特定的关键字来进一步确认。这样,即使是小屏幕的平板或对折设备,在用户代理中没有出现对应的移动设备关键字的情况下,也不会被误判为手机。
由于设备和浏览器环境的不断变化,这种方法仍然不是完全准确的,但它比仅仅基于屏幕尺寸的判断更加灵活和准确些。在实际应用中,可能还需要根据具体情况调整关键字列表或判断逻辑。

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

required