我必须删除添加到文档的所有事件侦听器。
所以根据THIS POST,我建立了这样的功能,但它显示TypeError: document.parentNode is null
!在javascript中删除文档的所有事件侦听器不使用事件名称
var msg = document.getElementById('state-msg');
var button = document.getElementById('removeListener');
document.addEventListener('keydown', function(e) {
msg.textContent = 'keydown:' + e.keyCode;
});
document.addEventListener('keyup', function(e) {
msg.textContent = 'keyup:' + e.keyCode;
});
document.addEventListener('keypress', function(e) {
msg.textContent += 'keypress:' + e.keyCode;
});
button.addEventListener('click', function(e) {
var elClone = document.cloneNode(true);
document.parentNode.replaceChild(elClone, document);
});
Press any key and get the message here: <span id="state-msg"></span>
<button id = "removeListener">RemoveListener</button>
这是非常基本的问题,但还是没有成功,任何一种意见将不胜感激。
UPDATE:
我也试过document = elNode
,但不工作。
'document'是*最顶层*父节点它没有父亲 –
也许使用类似'getEventListeners(document)'的东西''可能有些用处?复制/粘贴到您的浏览器控制台。 'var listener = getEventListeners(document); for(evt in listener){console.log('Event Type:'+ evt); console.log(listener [evt]);}'不知道它对你有什么用处。这不是删除事件监听器,而是列出正在使用的事件,所以也许你可以从那里删除它们? – NewToJS
@artgb啊,对。那么它使用谷歌浏览器为我列出了它们,但没有真正使用它,因此只提供了一个建议,在黑暗中拍摄。 – NewToJS