Javascript 我如何知道removeEventListener成功了?

Javascript 我如何知道removeEventListener成功了?,javascript,dom-events,Javascript,Dom Events,是否有方法确认removeEventListener成功?我在“播放”/“暂停”活动的视频元素中使用它。我试图实现的行为似乎不一致。下面是我如何使用它的一个例子 var playListener = function(){ console.log("video is playing") } videoElement.addEventListener("playing", playListener) 在我的代码中的其他地方 videoElement

是否有方法确认
removeEventListener
成功?我在“播放”/“暂停”活动的视频元素中使用它。我试图实现的行为似乎不一致。下面是我如何使用它的一个例子

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

videoElement.addEventListener("playing", playListener)
在我的代码中的其他地方

videoElement.removeEventListener("playing", playListener)
playliner
在我使用
removeEventListener
时可用,我传递视频元素的id,因此它与我添加事件侦听器的
videoElement
相同


我想知道是否可以执行某种类型的
控制台.log
或其他操作来确认
removeEventListener
是否工作。

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

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

debugger;
videoElement.removeEventListener("playing", playListener);
到达断点并暂停执行后,从Chrome Dev Tools的“元素”选项卡检查事件侦听器,以验证您的事件侦听器当前是否已设置:

您还可以在Firefox开发工具的Inspector选项卡中找到事件侦听器:

验证事件侦听器当前已设置后,返回调试器(Chrome“Sources”选项卡/Firefox“debugger”选项卡)并逐行检查代码(F10)


调用
removeEventListener
后,返回并再次检查事件侦听器。如果成功,则不应再设置事件侦听器。调试完成后,就可以继续执行代码(F8)。

这个概念对我来说是一个很大的障碍:删除侦听器需要与参数完全相同的函数。因此,如果您发送的是绑定函数(playliner.bind(this)),它就不是完全相同的函数(绑定会复制原始函数,并完成自己的内存分配)。因此,您必须将函数预绑定到另一个变量,然后使用预绑定函数添加和删除。