javascript - "touchend"的 MSPointer 等效项

标签 javascript windows-phone-8 touch internet-explorer-10

我正在将 HTML5 应用程序的一段代码从 iOS/Android 移植到 Windows Phone 8。在此应用程序中,有一个包含许多元素的垂直 ScrollView 。 在原始应用程序中,我使用“touchstart”和“touchend”事件。这意味着每次用户触摸列表时,我都会收到一个 touchstart 事件,即使在滚动后,当用户抬起手指时,我也会收到一个 touchend 事件。

MSPointer 模型的工作方式有所不同。 MSPointerDown 与 touchstart 完全相同,因此这方面没有问题。 不过,我无法理解如何对触摸端行为进行建模。 MSPointerUp 是不够的,因为只有当用户在发生 MSPointerDown 的同一容器内抬起手指时才会抛出 MSPointerUp。因此,如果用户触摸列表,然后向上滑动,然后抬起手指,则不会触发该事件。还有 MSPointerOut,当用户离开 MSPointerUp 被触发的容器时触发,这里的问题是,一旦离开容器(因此在列表滚动期间)它就会触发,并且在用户抬起后不会触发它的手指。

我对如何使用 MSPointer 建模“touchend”感到有点困惑,它的触发方式与 Webkit 的触发方式完全相同。

干杯

汤姆

最佳答案

这就是我处理这个问题的方式。

即使向下/移动监听器附加到某个元素,我也会将向上监听器附加到窗口。
这意味着无论用户在屏幕上的哪个位置抬起手指/笔/鼠标(甚至在 PC 上 IE 的浏览器窗口之外),都会触发 Up 事件。
这也意味着您必须在一个函数中处理应用程序中的所有 Up 事件。但是您可以在元素的 Down 事件上设置一个标志(某些全局变量),并在 UP 事件中检查该标志。

我长期以来一直在为 PC 网页上的鼠标事件执行此操作,以处理用户在浏览器窗口外松开鼠标按钮的情况。
当他们不这样做时,这很烦人,就像在谷歌地图街景中,你试图平移很远,并且必须移动鼠标很多,并且你放开了窗口外面的按钮,但它仍然认为你'重新拖动。

关于javascript - "touchend"的 MSPointer 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992234/

相关文章:

c# - 发生类型为 'System.AccessViolationException' 的未处理异常

android - 跨 Android 设备的屏幕灵敏度

html - Css hover+click/touch 触摸设备上的奇怪行为

javascript - 如何在javascript控制台(F12)中=号后将url页面增加一页?

netbeans - 支持 Netbeans 中的 Raphael Javascript 库

c# - 尝试从 Azure 检索数据时出现 MobileServiceInvalidOperationException

windows-phone-8 - 选择正确的 active 瓷砖类型

c# - Unity 滑动功能问题

javascript - 摆脱多余的方法定义

javascript - Mongoose query.remove() 回调未被调用