有什么方法可以检测YouTube API的getCurrentTime()中的时间变化吗?

目的:要在我的页面中播放限定时间(
我当时在考虑使用object.watch,但它仅适用于变量而不适用于函数。

我还尝试将某些内容绑定(bind)到原始源代码https://s.ytimg.com/yts/jsbin/www-widgetapi-vfl9twtxR.js中,但这太复杂了。

最佳答案

由于YouTube播放器是包裹在iFrame中的,因此您取决于播放器的显示内容,尽管他们通过getCurrentTime()函数显示了当前时间,但他们并没有公开任何可能更新时间的事件(实际上,时间仅每秒更新为公开函数6或7次,并且并不总是一致的。

因此,您唯一的选择是设置一个JavaScript计时器。有很多方法可以做到这一点;一个简单的是这样的:

setInterval(function(){
   // here you'd raise some sort of event based on the value of getCurrentTime();
   },100); // polling 8 times a second, to make sure you get it every time it changes.

由于来自iFrame的postMessage并不总是完全一致,因此您可以使此间隔计时器更大。或者,您可以使用诸如requestAnimationFrame之类的工具每秒轮询60次。

09-25 20:07