Javascript 使用YouTube API的自定义进度条

Javascript 使用YouTube API的自定义进度条,javascript,youtube,youtube-api,Javascript,Youtube,Youtube Api,我想使用YouTube API创建一个自定义进度条,我认为执行进度计算的最佳事件侦听器应该是YT.PlayerState.PLAYINGevent listener。 但这一事件根本不起作用。我认为这是完全错误的。有什么想法吗 player.addEventListener("YT.PlayerState.PLAYING", function() { console.log(player.getDuration()); }); 添加或删除事件侦听器 player.addEventLis

我想使用YouTube API创建一个自定义进度条,我认为执行进度计算的最佳事件侦听器应该是
YT.PlayerState.PLAYING
event listener。 但这一事件根本不起作用。我认为这是完全错误的。有什么想法吗

player.addEventListener("YT.PlayerState.PLAYING", function() {
    console.log(player.getDuration());
});
添加或删除事件侦听器

player.addEventListener(事件:String,侦听器:String):Void
为指定的事件添加侦听器函数。下面的事件部分确定了玩家可能触发的不同事件。侦听器是一个字符串,指定在触发指定事件时将执行的函数

player.removeEventListener(事件:String,侦听器:String):Void
删除指定事件的侦听器函数。侦听器是一个字符串,用于标识在触发指定事件时将不再执行的函数

事件

onStateChange
每当玩家的状态发生变化时,此事件就会触发。API传递给事件侦听器函数的值将指定一个对应于新播放器状态的整数。可能的值为:

-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).
当播放器首次加载视频时,它将广播一个未开始的(-1)事件。当视频提示并准备播放时,播放机将播放视频提示(5)事件。在代码中,可以指定整数值,也可以使用以下命名空间变量之一:

YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED

YT.PlayerState.PLAYING
是一种状态而不是事件您可以监听的事件是
onStateChange
然后,如果状态正在播放,您可以从播放机获取信息,并相应地更新搜索栏

player.addEventListener("onStateChange", updateBar);

function updateBar () {
    if (YT.PlayerState.PLAYING) {
        console.log(player.getCurrentTime());
        setTimeout(updateBar,200);
    }
}
我以前回答过这个问题,但回答得很糟糕:-(
我仍然在这里保留了旧的惰性回答代码的链接:

YT.PlayerState。播放是一种状态而不是事件您可以监听的事件是
onStateChange
然后,如果状态正在播放,您可以从播放机获取信息,并相应地更新搜索栏

player.addEventListener("onStateChange", updateBar);

function updateBar () {
    if (YT.PlayerState.PLAYING) {
        console.log(player.getCurrentTime());
        setTimeout(updateBar,200);
    }
}
我以前回答过这个问题,但回答得很糟糕:-(
我仍然在这里留下了旧的懒散回答代码的链接:

谢谢。有没有像在没有setTimeout()的纯HTML5视频中那样的方法func?我不这么认为,或者我不知道。我知道使用html5的唯一方法是iframe api,当然也可能使用flash。如果你想避免超时,可以使用requestAnimation Frame更新工具栏…状态更改是当你从停止更改为播放时。因此它不会在视频播放的所有时间都触发一次。这就是为什么你需要超时谢谢。有没有像纯HTML5视频中没有setTimeout()的方式func?我不这么认为,或者我不知道。我知道使用html5的唯一方法是iframe api,当然也可能使用flash。如果你想避免超时,可以使用requestAnimation Frame更新工具栏…状态更改是当你从停止更改为播放时。因此它不会在视频播放的所有时间都触发一次。这就是为什么你需要暂停