我正在寻找一种通过 Javascript 检测嵌入 Youtube 视频中的播放事件的方法。现在我能够检测到状态更改,但我不知道如何在之后解除事件绑定并触发另一个事件来表明它已完成。我也不想使用 add/removeEventListener 因为我猜 IE8 及以下版本没有此功能。
到目前为止我的代码,
function onYouTubePlayerReady(playerId) {
console.log('loaded');
var ytPlayer = document.getElementById(playerId);
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
console.log("Player's new state: " + newState);
if(newState === 1) {
sendYtUrl();
}
}
function sendYtUrl() {
console.log('play detected');
ytplayer.removeEventListener("onStateChange");
}
我希望弹出 sendYtUrl,删除侦听器,然后执行我需要执行的操作,或者更好的是,保持其简洁并将其保留在同一函数中。
提前致谢!
您不必解绑onStateChange event https://developers.google.com/youtube/js_api_reference#Events了解视频何时结束或完成。这onStateChange
只需要一个事件监听器。每次发生这些情况时,它将被触发并返回以下状态:
-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued)
在你的函数中onytplayerStateChange
, 加上另一个if
视频完成时捕获的语句:
function onytplayerStateChange(newState) {
console.log("Player's new state: " + newState);
if(newState === 1) {
sendYtUrl();
} else if(newState === 0) {
console.log("Video has ended!");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)