首页 > 解决方案 > 如何取消文档方法的关闭事件 - addEventListener('close')

问题描述

我有 mdl 的下一个对话框:

document.getElementById('dialog').addEventListener('close', function (event) {
         event.preventDefault()



});

所以我想取消这个活动。当我按下后退按钮时,我希望对话框不关闭。此事件可以捕获关闭事件,但不能停止该事件,因为可取消属性将设置为 false。

标签: javascriptangular

解决方案


您可以使用removeEventListener,但必须传递使用时传递的相同事件处理程序addEventListener

const closerHandler = function (event) {
  event.preventDefault();

}

document.getElementById('dialog').addEventListener('close',closerHandler); 
...    
document.getElementById('dialog').removeEventListener('close', closerHandler);

或者你可以使用 rxjsfromEvent

const source = fromEvent( document.getElementById('dialog'), 'close');
const subscribe = example.subscribe(val => console.log(val));

稍后您可以使用取消订阅方法

 subscribe.unsubscribe() 

推荐阅读