【问题标题】:In videojs, I can add a Text Track event handler, but I can't remove it在videojs中,我可以添加一个Text Track事件处理程序,但我不能删除它
【发布时间】:2022-01-06 17:09:26
【问题描述】:

我在文本轨道中添加了 'cuechange' 事件的处理程序“这工作正常。但我找不到删除此处理程序的方法。我尝试了以下每个说明来删除处理程序,但它仍然被调用.

onHiliteSpeech() {
  const textTrack = this.videojsComponent.getTextTrack();

  const handleCueChange = () => {
   ...
   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;
  }
}

在我的 videojsComponent 中:

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

【问题讨论】:

    标签: javascript typescript html5-video video.js


    【解决方案1】:

    经过反复试验,我发现了问题所在。函数“handleCueChange”不应是 onHiliteSpeech 中的嵌套函数。

    我将 handleCueChange 移到了 onHiliteSpeech 之外。 (这还涉及一些工作,以允许 handleCueChange 访问一些 OnHiliteSpeech 属性。)新的工作代码变为:

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

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2022-01-09
      • 2016-06-06
      • 1970-01-01
      相关资源
      最近更新 更多