MSPointer相当于“touchend”

时间:2014-02-24 15:42:11

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

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

MSPointer模型的工作方式不同。 MSPointerDown与touchstart完全相同,所以没有问题。 我无法理解如何模拟touchend行为。 MSPointerUp是不够的,因为只有当用户在发生MSPointerDown的同一容器内抬起手指时才会抛出它。因此,如果用户触摸列表,然后将其滑动然后抬起手指,则不会触发事件。还有MSPointerOut,当用户离开MSPointerUp被触发的容器时触发,问题在于,它会在容器离开后立即触发(因此在滚动列表期间),并且在用户抬起后不会触发它的手指。

我在这里有点不知道如何用MSPointer建模“touchend”,它将以与Webkit完全相同的方式触发。

干杯

汤姆

1 个答案:

答案 0 :(得分:0)

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

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

我已经在PC网页上做了很长时间的鼠标事件,当用户在浏览器窗口外面放开鼠标按钮时处理。
当他们不这样做时很烦人,就像在谷歌地图街景中那样,你试图远远地平移并且必须移动鼠标很多,然后你放开窗外的按钮,但它仍然认为你'拖着。