MSGestureTap事件的stopPropagation()

时间:2013-11-27 10:43:19

标签: javascript internet-explorer touch

我对MSGestureTap事件的传播在IE和Windows Phone中如何工作感到困惑。这是一个代码示例:

第一

http://jsfiddle.net/gTLKB/2/

(在桌面IE11和Windows Phone 8 IE上测试的示例)

正如您所看到的,有两个嵌套的div元素。在这两个节目中,我使用此处描述的方法http://msdn.microsoft.com/en-us/library/ie/dn433243(v=vs.85).aspx吊死MSGestureTap个事件侦听器。

正如您所看到的e.stopPropagation()内部元素事件有MSGestureTap。所以假定的行为是下一个:

  1. 用户点击内部元素并查看inner click提醒消息。
  2. MSGestureTap事件停止传播,之后没有任何反应。
  3. 实际结果MSGestureTap将触发外部元素。

    如果stopPropagation()MSGestureTapMSPointerDown,问题就会解决,但在现实生活中我在DOM树中有另一个元素,它有MSPointerDown个侦听器,应该是已调用,因此stopPropagation()事件无法MSPointerDown

    第二

    如果为内部元素移除e.stopPropagation() MSGestureTap事件,则外部元素的MSGestureTap侦听器将触发两次,这对我来说看起来很奇怪。代码示例:

    http://jsfiddle.net/gTLKB/4/
    

    事件执行顺序:

    • 内部点击
    • 外部点击
    • 外部点击

    第三

    在前面的示例中,如果您将更改在元素上挂起侦听器的顺序,则事件执行的顺序也会更改。例如:

    http://jsfiddle.net/gTLKB/5/
    
    • 外部点击
    • 内部点击
    • 外部点击

    此特定情况下的事件执行顺序不应取决于添加侦听器的顺序。

    有人可以解释这一切吗?我会非常感谢您的帮助。

0 个答案:

没有答案