可靠地检测用户是否在网页上使用鼠标?

时间:2013-05-07 15:47:00

标签: html5 touch mouseevent dom-events

在我们的页面上,我们在长水平滚动<div>中有一些iframe。如果用户使用鼠标,他们可以使用滚动条滚动,我们希望他们能够在iframe中选择文本。然而,如果他们只使用触摸,滚动条很麻烦,我想在整个事物上覆盖一个透明元素,使它们能够通过拖动轻松滚动,这当然牺牲了选择文本功能但是有意义那个场景。

这让我想到了我的问题,有没有办法可靠地检测用户是否通过鼠标与网页进行交互?

我在检测触摸或鼠标时看到的一切都是触摸会播放鼠标事件,因此很难检测触摸或鼠标(更不用说你可以同时使用它们)。我的问题更简单 - 用户是否通过鼠标与页面进行了交互。

有人能想出办法可靠地检查这个吗?

1 个答案:

答案 0 :(得分:2)

鼠标可以完成触摸设备永远无法做到的一件事 - 无需按任何按钮即可移动。所以我只是在页面加载时安装onMouseMove事件,如果它触发没有按按钮,则将用户标记为鼠标用户。然后,您可以通过cookie或LocalStorage持久保存,因为该标志不会在同一环境中更改,并立即删除该事件。实现单火事件的确切方法取决于您使用的库(如果有的话),但使用Mootools / JQuery文档应该很容易。

一般情况下,我建议在大多数情况下更简单地检查触摸界面:

if('ontouchstart'in window) 
{
    /* it's a touch device */ 
}