0

目前,我正在尝试为应该可以在一定范围内拖动的 HTML 元素实现触摸支持。它可以在使用 touchmove 的 Android 和 iOS 平板电脑上运行,但还不能在 Windows 平板电脑上的 IE 10 上运行。我设法捕获了 MSPointerMove 事件,我认为它应该具有 pageX 和 pageY 属性,但是当我console.log得到这些时,我得到了undefined. 使用手势事件不是一种选择,因为我需要知道它在轴上拖了多远。

那么,我应该寻找哪些属性?

4

2 回答 2

0

我不确定 HTML 页面是如何显示的,但是把style="-ms-touch-action: none". 这可能是因为 mousemove 事件的默认设置是拖动屏幕,而不是注册移动鼠标。

于 2014-12-04T16:14:26.740 回答
0

不幸的是,我的问题似乎没有包含足够的细节来包含实际问题——我可以测试的平板电脑无法访问互联网,所以我无法提供 JSFiddle 来演示这个问题。

所以问题是我正在使用 Angular,它使用 jQuery 的一种形式来包装事件。通常,这很棒:jQuery 无需检测当前浏览器关于事件对象的特定实现细节,而是设置包装事件对象本身的pageXpageY属性,以便您始终可以自信地访问这些属性。

但是:jQuery,至少在我使用的版本(1.10.2)中,还不知道如何处理MSPointer事件(或pointer事件,在 IE11 中使用,就此而言)。因此,虽然我有一个包装事件对象,但没有pageXpageY属性。

解决方法是访问event.originalEvent,即特定于浏览器的事件。由于该规范看起来只能由 IE 实现,因此假设该对象以 IE 构造它的方式构造并直接访问其上的pageXandpageY属性应该是相对安全的。

于 2014-12-05T11:08:04.883 回答