简体   繁体   English

我怎么知道 removeEventListener 成功了?

[英]How do I know that removeEventListener was successful?

Is there a way to confirm that removeEventListener was successful?有没有办法确认removeEventListener成功? I'm using it on a video element for the "playing"/"pause" event.我在“播放”/“暂停”事件的视频元素上使用它。 The behavior I'm trying to achieve seems to be inconsistent.我试图实现的行为似乎不一致。 Here is an example of how I'm using it.这是我如何使用它的示例。

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

videoElement.addEventListener("playing", playListener)

Somewhere else in my code在我的代码中的其他地方

videoElement.removeEventListener("playing", playListener)

playListener is available where I'm using removeEventListener and I'm passing around the video element's id so it is the same videoElement I added the event listener to. playListener在我使用removeEventListener地方可用,并且我正在传递视频元素的 id,因此它与我添加事件侦听器的videoElement相同。

I want to know if I can do some kind of console.log or something to confirm that the removeEventListener worked.我想知道我是否可以做某种console.log或其他东西来确认removeEventListener工作。

Unfortunately, the removeEventListener method doesn't return anything or throw an error when it does not successfully remove an event listener.不幸的是, removeEventListener方法在没有成功删除事件侦听removeEventListener不会返回任何内容或抛出错误。 There's also no JavaScript method to access what event listeners are currently set for a given element.也没有 JavaScript 方法来访问当前为给定元素设置的事件侦听器。

As far as debugging your issue, most modern browser's developer tools do provide the capability to view event listeners.至于调试您的问题,大多数现代浏览器的开发人员工具确实提供了查看事件侦听器的功能。 You can put a debugger statement in your code (or set a breakpoint) to pause execution immediately before you've called removeEventListener :您可以在代码中放置debugger语句(或设置断点)以在调用removeEventListener之前立即暂停执行:

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

Once the breakpoint is reached and execution is paused, check the event listeners from Chrome Dev Tools' Elements tab to verify that your event listener is currently set:到达断点并暂停执行后,从 Chrome Dev Tools 的 Elements 选项卡检查事件侦听器以验证您的事件侦听器当前是否已设置:

Chrome 开发工具事件监听器

You can also find event listeners in Firefox Dev Tools' Inspector tab:您还可以在 Firefox Dev Tools 的 Inspector 选项卡中找到事件侦听器:

Firefox 开发工具事件监听器

After verifying that your event listener is currently set, go back to the debugger ( Chrome "Sources" Tab / Firefox "Debugger" Tab ) and step through the code ( F10 ) line by line.确认您的事件侦听器当前已设置后,返回调试器( Chrome "Sources" Tab / Firefox "Debugger" Tab )并逐行执行代码 ( F10 )。

After your call to removeEventListener is made, go back and check your event listeners again.在您调用removeEventListener之后,返回并再次检查您的事件侦听器。 If it was successful, your event listener should no longer be set.如果成功,则不应再设置您的事件侦听器。 Once you're done debugging, you can then resume code execution ( F8 ).完成调试后,您可以恢复代码执行 ( F8 )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM