【问题标题】:How to detect device type using javascript [closed]如何使用javascript检测设备类型[关闭]
【发布时间】:2013-05-13 10:44:24
【问题描述】:

我正在开发一个需要从 javascript 检测设备的 Web 应用程序。谁能告诉我最好的方法是什么?我通过谷歌搜索找到了几个解决方案。但没有人能完全证明。我不想使用 WURFL 之类的服务器端检测。

我的更新

我正在通过使用 javascript 匹配 CSS 媒体查询来检测设备。 Paul Irish 使用 polyfill 进行媒体查询匹配 https://github.com/paulirish/matchMedia.js/

【问题讨论】:

  • 它不是完全证明是有原因的。所有一起工作的 http/web/clients 都是通过隐含的协议/合同,并且本质上不受监管。您找到的任何解决方案在构造上都是不完美的,此时您的最佳解决方案只是一种响应式方法。
  • 基于目标的宽度,您可以评估 Si\e
  • @JustinL。 : 我已经有了响应式设计。但我希望根据设备检测延迟加载某些部分。

标签: javascript mobile tablet


【解决方案1】:

你可以使用:

1) JS:由用户代理检测

if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i))

从这里获取用户代理字符串: http://www.useragentstring.com/pages/useragentstring.php.

2) CSS:使用响应式设计

3) JS:通过screen.width检测屏幕宽度

【讨论】:

  • [免责声明]:站点“useragentstring.com”未提及iphoneipadipod。请也包括他们。
  • 我使用什么 screen.width 和 screen.height 来区分三星设备(如 Note)和较小的平板电脑?
  • 如果你已经有/i,则在正则表达式中不需要大写
  • 小心 userAgent 检测。 IE 11 用户代理包括“iPhone”...
【解决方案2】:

我建议您查看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();
}

这就是你要找的。​​p>

免责声明:我为提供这项免费服务的公司工作。谢谢。

【讨论】:

  • Ehrm 可能会问,wurfl.js 实际上在做什么?它几乎不可读。
  • 我的意思是这一切都很好,但是有一天你们会决定取消服务或收取费用,让我的客户没有被发现。或者,是的,您的服务器出现故障。然后呢?从您的服务器复制粘贴时,此 js 文件将不起作用。
  • ScientiaMobile 不会关闭该服务。我们还将提供基于订阅的升级版 WURFL.js,称为商业版。这将为开发人员提供选择:免费版本(针对业余爱好者和小商店)和企业级版本,供可以使用额外功能的公司使用。您收到的 JS 文件已最小化,但其中没有特别的魔力。它只是带有设备数据和一些 cookie 处理的 JSON。 WURFL.js 的强大之处在于后端,其中运行着一个完整的 WURFL 设备检测框架实例。
  • 我真的不明白为什么要将其客户的一些个人信息发布到第三方后端,只是为了检查客户使用的是平板电脑还是笔记本电脑……
  • 我猜IP号码和设备屏幕大小等信息属于“个人信息”的更广泛定义。另一方面,如果我们通过个人信息暗示人们的年龄、性别、居住地、喜欢什么等等,ScientiaMobile 显然不会收集,也没有可能收集这些信息。当然,我们可以使用该数据馈送来深入了解移动市场趋势,我们会这样做并且我们很乐意通过季度 MOVR 报告与全世界免费分享:scientiamobile.com/page/movr-mobile-overview-report
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
相关资源
最近更新 更多