问一下有关触摸的问题

image

如图,A是一个大的区域,B是一个小区域,且B是A的子节点。AB都在监听触摸,分别有touchstart,touchcancel和touchend。我们知道,如果不做event.stopPropagation(),A触摸之后,B还是可以监听到触摸的(父节点会触摸穿透到子节点)。但是我发现一个很奇怪的点,我如果和箭头一样,在B上发起触摸,A在touchstart能监听到,然后我从B一直滑动到B区域以外的A区域,松开触摸,A不是touchend接收,而是touchcancel来接收这次触摸的结束。这是不是bug呀…如果我从A开始触摸到B区域,是正常的touchend接收触摸的结束。这里是有什么说法吗,我现在需要的是B触摸打A区域,松开触摸的时候也还是touchend来接收…

就如你所知道的 event.stopPropagation() 可以停止事件向上传递,你触摸的是 b ,所以 a 接收到的事件都是由b向上传递的,包括 touchcancel

噢,我理解了…对于B来说就是touchcancel,所以A就接收到这个了…
谢谢。

我没理解 :flushed:

就是B触摸开始,然后滑动到B外面,这时候对于B来说就是touchcancel。这个B的触摸穿透到了A,所以A接收的也是touchcancel。2楼说的是接收事件由B向上传递.所以是touchcancel…

请问是冒泡阶段还是捕获阶段

不晓得哎,我只是看了2楼的答案 觉得很有道理…说得通,具体引擎的代码我没去看…要不你问问2楼…

好吧~~~

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。