要使用 Konva 根据名称移除事件监听器,我们可以使用 on()
方法对事件类型进行命名空间处理,这样我们就可以使用相同的命名空间通过 off()
方法移除事件监听器。
指示:点击圆圈以查看来自两个不同 onclick 事件绑定触发的两个警报。使用左侧的按钮移除事件监听器,然后再次点击圆圈以观察新的 onclick 绑定。
Konva 根据名称移除演示view raw<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/konva@9.3.18/konva.min.js"></script> <meta charset="utf-8" /> <title>Konva Remove Event Listener by Name Demo</title> <style> body { margin: 0; padding: 0; overflow: hidden; background-color: #f0f0f0; }
#buttons { position: absolute; top: 5px; left: 10px; } </style> </head>
<body> <div id="container"></div> <div id="buttons"> <button id="remove1">Remove First Listener</button> <button id="remove2">Remove Second Listener</button> <button id="removeAll">Remove All Listeners</button> </div> <script> function writeMessage(message) { text.text(message); }
var stage = new Konva.Stage({ container: 'container', width: window.innerWidth, height: window.innerHeight, });
var layer = new Konva.Layer();
var circle = new Konva.Circle({ x: stage.width() / 2, y: stage.height() / 2 + 10, radius: 70, fill: 'red', stroke: 'black', strokeWidth: 4, });
circle.on('click.event1', function () { alert('First Listener'); }); circle.on('click.event2', function () { alert('Second Listener'); });
layer.add(circle); stage.add(layer);
document.getElementById('remove1').addEventListener( 'click', function () { circle.off('click.event1'); alert('First onclick removed'); }, false );
document.getElementById('remove2').addEventListener( 'click', function () { circle.off('click.event2'); alert('Second onclick removed'); }, false );
document.getElementById('removeAll').addEventListener( 'click', function () { circle.off('click'); alert('All onclicks removed'); }, false ); </script> </body> </html>
|