angular2 web worker中的停止事件
Posted
技术标签:
【中文标题】angular2 web worker中的停止事件【英文标题】:Stop event in angular2 web worker 【发布时间】:2016-06-06 11:28:55 【问题描述】:如何阻止 Web Worker 中的事件传播?
如果你在 web worker 中得到的东西没有 stopPropagation 方法。
谢谢
更新
具体点击我现在感兴趣的事件。
事件对象包含:
altKey: false
button: 0
clientX: 780
clientY: 82
metaKey: false
movementX: 0
movementY: 0
offsetX: 361
offsetY: 51
region: undefined
screenX: 784
screenY: 177
shiftKey: false
更新 2
在 angular2 中,您可以在 web worker 中运行整个应用程序。这意味着您必须通过渲染器接口与浏览器进行通信。似乎无法从该界面停止冒泡。
奇怪的是,他们在 alpha.xxx 中删除了 (^click) 语法,这意味着事件仅使用 ^ 冒泡,而没有 ^ 所有事件默认情况下都不会冒泡......但它只是被删除并没有更改为反之。
还想知道 angular material 是否会支持 web worker,因为他们的代码中有 event.stopPropagation ...
【问题讨论】:
更新了 angular2 的标题,因为它可能是特定于它的,因为事件被序列化了。 嗯? WebWorkers中有点击事件吗?他们来自哪里? 来自框架的 ui 部分。 github.com/angular/angular/blob/master/modules/angular2/src/… 那么显然你不能从不同的线程取消本机事件。除非 Angular 使用事件来引发事件,否则您只能从 WebWorker 中读取事件。很可能,当您通过onMessage
收到它时,该事件已经冒泡了。您正在使用 WebWorkers,但您希望一切都是同步的?
是的,明白,但我仍然不希望点击进一步到达父级。希望这并不意味着一切都是同步的......
【参考方案1】:
该特定类型的事件不会冒泡,因此它没有stopPropagation
API。根据 MDN 文档:
事件不会冒泡并且可以取消;为了防止默认动作发生,worker可以调用error事件的preventDefault()方法。
有关更多信息,请参阅“处理错误”部分的 here。
【讨论】:
但是点击应该传播,我用从事件中得到的对象更新了问题。以上是关于angular2 web worker中的停止事件的主要内容,如果未能解决你的问题,请参考以下文章
进程,线程,Event Loop(事件循环),Web Worker