【问题标题】:detecting mobile device through mouse events通过鼠标事件检测移动设备
【发布时间】:2013-01-09 16:42:25
【问题描述】:

我希望检测设备是移动设备(手机或平板电脑)还是台式机。我想过使用mousemovemouseenter 事件,这样当这个事件触发时,我可以将一个全局布尔标志IsDesktop 设置为true。

这是个好主意还是鼠标事件也可以在移动设备上触发?

谢谢。

【问题讨论】:

  • 常用的方法是检测文档的大小,这是唯一应该困扰你的事情。
  • 移动浏览器模拟鼠标事件。您可以改为检查是否存在触摸事件处理程序属性。然而,这并没有真正区分“移动”和“非移动”;重 200 磅的 48 英寸触摸屏设备将具有触摸事件处理程序。
  • @gdoron 你指的是我假设的 CSS 媒体查询,它只与样式有关。对于在 javascsript 中使用,这是非常没用的。
  • 您是否有任何具体原因要从鼠标事件中获取该信息?有很多开源库可以检查。
  • @inhan:我只是在寻找一种无需插件的快速简便的方法。

标签: javascript mobile


【解决方案1】:

你必须意识到这里有两种不同的情况:

  1. 显示尺寸:大/小
  2. 鼠标和/或触摸

在第二种情况下,您不需要做太多其他事情,只需实现两组事件即可。在第一种情况下,您可能想要加载替代模板;对于小屏幕(触摸)设备来说更直观的一种。这是您应该检查的内容。

实际上没有办法检测屏幕尺寸,因为移动设备上的像素要密集得多。查看 User-Agent 字符串是一个好的开始。

如果您不担心屏幕大小并且不需要单独的模板,那么您不需要做任何特别的事情。只需实现两组事件即可。

【讨论】:

  • 问题的重点是事件,而不是屏幕尺寸。
【解决方案2】:

鼠标事件中有sourceCapabilities字段,可用于检查浏览器是否启用触摸。

但仅存在于基于 Chromium 的浏览器中,处于试验阶段,因此不建议用于生产。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多