【问题标题】:JavaScript for Desktop or Mobile Detection用于桌面或移动检测的 JavaScript
【发布时间】:2015-06-07 03:20:03
【问题描述】:

我得到了一些用于检测用户是在使用移动设备还是桌面的代码。

var user_agent = navigator.userAgent;
var mobile = /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i;
if (!mobile.test(user_agent)) {
    $(".master-content").css({"width":"1280px","margin":"0 auto","overflow-y":"visible"});
    $(".off-canvas-wrap").css({"overflow":"visible"});
}

谁能告诉我一种更可靠的方法来做到这一点,或者至少为什么这是一种不好的设备检测方法?

谢谢

【问题讨论】:

  • 最好的方法是使用feature detection而不是环境检测。不管他们使用什么浏览器,只要它支持您使用的任何功能。
  • 你为什么不只检测屏幕尺寸,然后根据它来决定是移动设备、平板电脑还是电脑......
  • 那段代码有问题吗,什么时候不起作用?通常,您会进行功能检测,而不是浏览器或设备检测,但在某些情况下,例如重定向到网站的移动版本时,没关系。
  • Detecting a mobile browser 的可能副本

标签: javascript


【解决方案1】:

您提供的代码没有任何问题。它可能看起来真的很难看,但本质上,您所做的只是将用户的用户代理与所有移动设备用户代理的正则表达式进行比较,看看它是否匹配。

这种方法唯一可以预见的问题是,随着新的移动设备进入市场,您将不得不不断更新您的唯一标识符列表。话虽如此,您当前的列表似乎涵盖了当今超过 95% 的移动设备,所以您应该没问题。

正如其他人所说,还有其他方法可以检测移动设备,例如屏幕尺寸、特征检测等。但是,我在使用用户代理方面取得了最大的成功,就像你一样。如果你想覆盖更多的移动设备,我建议使用我一直贡献的这个开源移动检测库:https://github.com/serbanghita/Mobile-Detect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多