YouTube播放器API:检索对现有播放器的引用

时间:2013-06-12 19:44:23

标签: javascript google-chrome-extension youtube-api youtube-javascript-api

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

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

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

其中div#ytplayer是嵌入实际播放器的iFrame。

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

  

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

检索对现有玩家的引用的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

之前我正在使用YouTube播放器API并且它正常运行。今天我遇到了像你这样的问题,而且我的代码中没有任何改变。这可能意味着www-widgetapi-vfljlXsRD.js已被更改并遇到错误......我无法继续帮助。

答案 1 :(得分:1)

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

我被Rob的惊人作品所激发(参见YouTube iframe API: how do I control a iframe player that's already in the HTML?),我说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事件包含当前播放器的时间,并在视频播放时发送。听了这个事件,我现在能够知道当前的比赛时间。

到目前为止,我还没有找到合适的解决方案,所以这个人现在就能完成这项工作。