我怎么知道removeEventListener成功了?

时间:2015-12-04 01:17:33

标签: javascript javascript-events

有没有办法确认revmoveEventListener是否成功?我在视频元素上使用它来播放" /"暂停"事件。我试图实现的行为似乎不一致。以下是我如何使用它的示例。

var playListener = function(){
  console.log("video is playing") 
}

videoElement.addEventListener("playing", playListener)

我的代码中的其他地方

videoElement.removeEventListener("playing", playListener)

playListener可用于我使用removeEventListener并且我传递视频元素的id,因此它与我添加事件监听器的视频元素相同。

我想知道我是否可以使用某种console.log来确认removeEventListener是否有效。

1 个答案:

答案 0 :(得分:10)

不幸的是,removeEventListener方法在没有成功删除事件侦听器时不会返回任何内容或抛出错误。还没有JavaScript方法可以访问当前为给定元素设置的事件侦听器。

就调试问题而言,大多数现代浏览器的开发人员工具都提供了查看事件侦听器的功能。您可以在代码中放置debugger语句(或设置断点),以便在调用removeEventListener之前暂停执行:

debugger;
videoElement.removeEventListener("playing", playListener);

一旦达到断点并暂停执行,请检查Chrome开发工具的“元素”选项卡中的事件侦听器,以验证您的事件侦听器当前是否已设置:

Chrome Dev Tools Event Listners

您还可以在Firefox Dev Tools的“检查器”选项卡中找到事件侦听器:

Firefox Dev Tools Event Listeners

在验证您的事件监听器当前已设置后,返回调试器( Chrome“Sources”选项卡/ Firefox“调试器”选项卡)并逐步执行代码( F10 )逐行。

在致电removeEventListener后,请返回并再次检查您的事件监听器。如果成功,则不应再设置事件侦听器。完成调试后,您就可以恢复代码执行( F8 )。