如何获取THEOPlayer中已初始化的播放器实例?
获取已初始化THEOPlayer实例的实现方案
你可以直接通过THEOplayer内置的属性和API拿到已经完成初始化的实例,不需要重复执行new THEOplayer.Player(element)构造逻辑,具体方式分以下几种场景:
- 已知播放器挂载的DOM容器时
THEOplayer初始化完成后,会自动把实例挂载到对应容器DOM的player属性上,直接读取即可:// 替换成你实际的播放器容器选择器 const playerContainer = document.querySelector('#your-player-element-id'); const playerInstance = playerContainer.player; - 页面存在多实例、或不确定挂载容器时
THEOplayer全局对象下维护了players数组,存储了当前页面所有已完成初始化的播放器实例,直接读取即可:// 获取所有已初始化的THEOplayer实例 const allPlayerInstances = THEOplayer.players; // 取第一个初始化完成的实例 const firstPlayer = THEOplayer.players[0]; - 逻辑执行时机早于播放器初始化时
如果你的业务脚本加载/执行时间比THEOplayer初始化早,可以监听播放器容器的theoplayerready事件,等实例就绪后再获取操作:const playerContainer = document.querySelector('#your-player-element-id'); playerContainer.addEventListener('theoplayerready', () => { const readyPlayer = playerContainer.player; // 就绪后即可执行你需要的控制逻辑 readyPlayer.pause(); // 停止播放 readyPlayer.currentTime = 30; // 跳转到30秒位置 readyPlayer.textTrackStyle = { fontSize: '20px', backgroundColor: 'rgba(0,0,0,0.8)' }; // 配置字幕样式 });
注意:不要在实例初始化完成前强行调用API,否则会出现属性为undefined的报错。如果无法确认执行时机,统一加
theoplayerready事件监听做兜底即可。
内容的提问来源于stack exchange,提问作者丶 Limeー来夢 丶
相关产品推荐
相关产品推荐

