zrender icon indicating copy to clipboard operation
zrender copied to clipboard

zrender里的事件能不能阻止冒泡或者开启捕获模式

Open fssh opened this issue 2 years ago • 1 comments

如题,希望能阻止冒泡并能开启捕获模式。

fssh avatar Jul 21 '22 05:07 fssh

看这里的代码:

https://sourcegraph.com/github.com/ecomfe/[email protected]/-/blob/src/Handler.ts?L314

const eventKey = ('on' + eventName) as ElementEventNameWithOn;
const eventPacket = makeEventPacket(eventName, targetInfo, event);

while (el) {
    el[eventKey]
        && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));

    el.trigger(eventName, eventPacket);

    // Bubble to the host if on the textContent.
    // PENDING
    el = el.__hostTarget ? el.__hostTarget : el.parent;

    if (eventPacket.cancelBubble) {
        break;
    }
}

所以,你可以通过手动将 event.cancelBubble 设置为 true 来阻止事件冒泡。


至于捕获模式,你的应用场景是什么呢?

wang1212 avatar Aug 11 '22 18:08 wang1212