如何停止 eventlistener,它甚至在杀死它后继续触发?

How to stop eventlistener, which is even keep triggering after killing it?

我有以下方法可以执行视频剪辑,并且在视频剪辑的进度上它会发出一个警报,在该警报之后它应该关闭侦听器但它不会结束事件侦听器因此警报保持展现永恒的无限。

这是BUG吗?还是我的以下代码中缺少某些内容?

function video_present(input) {

  $('#mediaplayer').prop('loop', false); 
  $('#mediaplayer').attr('src', filename).show();
  mediaplay_video= document.getElementById('mediaplayer');  
  mediaplay_video.play();      
  
  // STOP repeating??
  mediaplay_video.addEventListener('timeupdate', function() {
    var sss = parseInt(mediaplay_video.currentTime % 60);
    show_second();
  }, false);  
  
}

// kill Event after 1 time execute of this
function show_second() {
  alert('I was executed - stop me now if you can??');
  mediaplay_video.removeEventListener('timeupdate', function() {
    alert('I am killed, but why am i again getting called???');
  });


}

video_present('Terminator_10.webm');

removeEventListener 的第二个参数是监听函数本身。如果您不传递与 addEventListener 相同的参数,它将不会被删除。使用命名函数或函数变量来确保在两个地方使用相同的函数对象:

function handleTimeUpdate() {
  var sss = parseInt(mediaplay_video.currentTime % 60);
  show_second(); 
}

mediaplay_video.addEventListener('timeupdate', handleTimeUpdate, false);  

...

mediaplay_video.removeEventListener('timeupdate', handleTimeUpdate);