0

我正在使用内容脚本开发 Google Chrome 扩展程序。我想与嵌入 YouTube 视频播放器的页面进行交互。我已将其包含www-widgetapi-vfljlXsRD.js为 JavaScript 文件,并且 YouTube 命名空间已在扩展沙箱内正确初始化。

我正在尝试检索对现有 iFrame 播放器的引用。为了实现这一点,我尝试了这个:

var ytplayer = new YT.Player('ytplayer'); 
ytplayer.pauseVideo();

div#ytplayer嵌入实际播放器的 iFrame在哪里。

我收到此错误,告诉该方法不存在:

TypeError:对象#没有方法'pauseVideo'

检索对现有播放器的引用的正确方法是什么?

4

2 回答 2

1

好的,我找到了与现有玩家交谈的方法。我实际上并没有设法获得对它的工作参考。

我受到 Rob 的惊人工作的启发(参见YouTube iframe API:如何控制已经在 HTML 中的 iframe 播放器?),我注意到 Youtube 播放器正在向主窗口发送消息,如下所示:

{"event":"infoDelivery","info":{"currentTime":3.3950459957122803,"videoBytesLoaded":244,"videoLoadedFraction":0.24482703466872344},"id":1}

window.addEventListener('message', function (event) {console.log(event.data)}, false);您可以通过在包含正在播放的播放器的窗口中收听“消息”事件来观察它。

infoDelivery事件包含当前播放器的时间,并在视频播放时发送。听这个事件,我现在能够知道当前的玩家时间。

到目前为止,我还没有找到合适的解决方案,所以这个解决方案暂时可以完成。

于 2013-06-14T16:55:54.523 回答
1

我之前使用的是 YouTube 播放器 API,它工作正常。今天我遇到了像你这样的问题,我没有改变我的代码中的任何东西。这可能意味着www-widgetapi-vfljlXsRD.js已经更改并遇到错误......我无法再提供任何帮助。

于 2013-06-12T22:30:38.350 回答