我对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
。所以假定的行为是下一个:
inner click
提醒消息。MSGestureTap
事件停止传播,之后没有任何反应。 实际结果:MSGestureTap
将触发外部元素。
如果stopPropagation()
和MSGestureTap
都MSPointerDown
,问题就会解决,但在现实生活中我在DOM树中有另一个元素,它有MSPointerDown
个侦听器,应该是已调用,因此stopPropagation()
事件无法MSPointerDown
。
如果为内部元素移除e.stopPropagation()
MSGestureTap
事件,则外部元素的MSGestureTap
侦听器将触发两次,这对我来说看起来很奇怪。代码示例:
http://jsfiddle.net/gTLKB/4/
事件执行顺序:
在前面的示例中,如果您将更改在元素上挂起侦听器的顺序,则事件执行的顺序也会更改。例如:
http://jsfiddle.net/gTLKB/5/
此特定情况下的事件执行顺序不应取决于添加侦听器的顺序。
有人可以解释这一切吗?我会非常感谢您的帮助。