#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); }