我们可以通过设置 Event 的 cancelBubble
属性为 true,来取消事件冒泡
说明:点击图中的圆,只有圆绑定的事件被执行,因为当圆绑定的事件被触发时事件传播被取消了,阻止了事件向上冒泡;
Konva Cancel_Propagation Demoview raw<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/[email protected]/konva.min.js"></script> <meta charset="utf-8" /> <title>Konva Cancel Event Bubble Propagation Demo</title> <style> body { margin: 0; padding: 0; overflow: hidden; background-color: #f0f0f0; } </style> </head>
<body> <div id="container"></div> <script> var stage = new Konva.Stage({ container: 'container', width: window.innerWidth, height: window.innerHeight });
var layer = new Konva.Layer();
var group = new Konva.Group();
var circle = new Konva.Circle({ x: stage.width() / 2, y: stage.height() / 2, radius: 70, fill: 'red', stroke: 'black', strokeWidth: 4 });
circle.on('click', function(evt) { alert('You clicked the circle!'); evt.cancelBubble = true; });
group.on('click', function() { alert('You clicked on the group!'); });
layer.on('click', function() { alert('You clicked on the layer!'); });
group.add(circle); layer.add(group);
stage.add(layer); </script> </body> </html>
|