2013-05-07 39 views
2

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

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

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

任何人都可以想出一种方法来检查这种可靠吗?

回答

2

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

总的来说,我建议你只检查在大多数情况下,触摸界面的更容易的途径:

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

哦,良好的通话。现在就试试看。对于你的其他方法,我相信我已经读过规范指出'ontouchstart'也应该存在于非触摸设备上(尽管当然在很多当前版本中情况并非如此,我无法找到我读的地方)。对于鼠标和触摸都可用的情况,它也不会有太大的帮助。 – 2013-05-07 17:15:56

+1

真棒,有用,这是一个实现http://jsbin.com/eyotuz/3/edit – 2013-05-07 17:32:13

+0

我建议你非常小心,我知道很多人正在用手指在触摸设备上“悬停” 。这意味着他们在触摸屏幕之前检测手指(预定位),这可能会在释放这些设备时以鼠标移动的方式进行转换。 – nraynaud 2013-05-08 19:16:11

相关问题