В видео я могу добавить обработчик событий текстовой дорожки, но не могу его удалить

#javascript #typescript #html5-video #video.js

#язык JavaScript #машинописный текст #html5-видео #video.js

Вопрос:

Я добавил обработчик события» cuechange «в текстовую дорожку» Это работает нормально. Но я не могу найти способ удалить этот обработчик. Я попробовал каждую из приведенных ниже инструкций, чтобы удалить обработчик, но он все равно вызывается.

 onHiliteSpeech() {  const textTrack = this.videojsComponent.getTextTrack();   const handleCueChange = () =gt; {  ...  console.log(in event handler);  }  };   if (this.bevents) {  textTrack.addEventListener('cuechange', handleCueChange);  } else {   // none of the below instructions remove the handler.  textTrack.removeEventListener('cuechange', handleCueChange);  // textTrack.removeAllListeners();  // textTrack.removeAllListeners('cuechange');  // textTrack.eventListeners = null;  } }  

В моем видеокомпоненте:

 getTextTrack(): TextTrack {  return this.player.textTracks()[0]; }  

Ответ №1:

После некоторых проб и ошибок я обнаружил проблему. Функция «handleCueChange» не должна быть вложенной функцией в onHiliteSpeech.

Я переместил handleCueChange за пределы onHiliteSpeech. (Это также потребовало некоторой работы, чтобы разрешить handleCueChange доступ к некоторым свойствам OnHiliteSpeech.) Новый рабочий кодекс стал:

 const handleCueChange = () =gt; {  ...  console.log(in event handler);  } };  onHiliteSpeech() {   textTrack.addEventListener('cuechange', this.handleCueChange);  ...  textTrack.removeEventListener('cuechange', this.handleCueChange); }