【问题标题】:Reliably detect if a user is using a mouse on a webpage?可靠地检测用户是否在网页上使用鼠标?
【发布时间】:2013-05-07 15:47:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: html touch mouseevent dom-events


    【解决方案1】:

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

    一般来说,在大多数情况下,我建议使用更简单的方法来检查触摸界面:

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

    【讨论】:

    • 哦,好电话。现在就试试看。对于您的其他方法,我相信我已经读过规范表明ontouchstart 也应该存在于非触摸设备上(尽管在许多当前版本中确实不是这种情况,我找不到我在哪里读到的)。对于鼠标和触摸都可用的情况,它也无济于事。
    • 我建议你要非常小心,我知道很多人都在用手指在触摸设备上进行“悬停”。这意味着他们在手指触摸屏幕之前检测到手指(预定位),当这些设备被释放时,这可能会转化为鼠标移动。
    • @nraynaud 啊,真的吗?那么那些混蛋在我的应用程序中没有选择文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2012-09-12
    • 2012-07-31
    相关资源
    最近更新 更多