我用Creator2.4.5导出WebMobile版本之后,
我给在导出的工程中的 index.html 中给window添加了一个事件,window.addEventListener(‘msgready’, addMessageListener);但是好像监听不到,我把index.html 中的 GameCanvas 节点 去掉之后就可以了,是禁止事件向上传递了么?应该怎么解决呢?
试试:
window.document.body.addEventListener(‘msgready’, addMessageListener);
如果你有发出这个事件
我试了不起作用,但我把 index.html 中 的 GameCanvas 节点 去掉就可以收到事件了,是什么原因呢?
那就是GameCanvas捕捉了这个事件并停止了冒泡,你可以看下引擎的JS代码 把事件放出来 你可以在调试里断点试试。msgready这个事件是怎么触发的?
这个事件是第三方的App调用html来发送的,调试起来比较麻烦,我猜也是GameCanvas停止了事件的冒泡,但我在代码里面找不到相关的设置。
两个方面:
1要确认下msgReady这个第三方的事件 是通过触摸触发还是怎么触发的,找到事件发送源头。
方法:你可以把canvas删掉后 断点到这个事件,然后看调用堆栈,找到发出这个事件的JS代码。
2、根据1的情况,在cocos引擎里去断点事件相关的代码,最后就能看到。我记得cocos2d-js里也是屏蔽了事件的,最后需要自己修改引擎,让事件往上冒泡。creator理论上可能也是这样,需要自己断点和看代码。
好的,非常感谢,我想问一下,取消屏蔽大概是什么样的代码?
在引擎里找类似的代码
e.stopPropagation();
e.preventDefault();
这个解决了没,我现在也出现web事件触发被canvas挡住