我正在使用内容脚本开发Google Chrome扩展程序。我想与嵌入YouTube视频播放器的网页进行互动。我已将www-widgetapi-vfljlXsRD.js
包含为JavaScript文件,并且YouTube名称空间在扩展沙箱中正确初始化。
我正在尝试检索对现有iFrame播放器的引用。为此,我尝试了这个:
var ytplayer = new YT.Player('ytplayer');
ytplayer.pauseVideo();
其中div#ytplayer
是嵌入实际播放器的iFrame。
我收到此错误,告诉该方法不存在:
TypeError:对象#没有方法'pauseVideo'
检索对现有玩家的引用的正确方法是什么?
答案 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
事件包含当前播放器的时间,并在视频播放时发送。听了这个事件,我现在能够知道当前的比赛时间。
到目前为止,我还没有找到合适的解决方案,所以这个人现在就能完成这项工作。