【问题标题】:YouTube Player API: retrieving a reference to an existing playerYouTube Player API:检索对现有播放器的引用
【发布时间】:2013-06-09 01:33:34
【问题描述】:

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

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

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

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

我收到了这个错误,提示该方法不存在:

TypeError: Object # has no method 'pauseVideo'

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

【问题讨论】:

  • 如果您只想暂停/播放视频,请查看此问题右侧的第一个链接(“相关”标题下方)。
  • 我想实际获取视频的当前时间。感谢您的帮助

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


【解决方案1】:

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

【讨论】:

  • 问题现已解决,但我仍然无法获得对现有播放器的引用。你能做到这一点吗?
【解决方案2】:

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

我受到 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 事件包含当前播放器的时间,并在视频播放时发送。听这个事件,我现在可以知道当前的玩家时间。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2016-12-23
    • 2013-11-05
    • 2015-12-31
    • 1970-01-01
    • 2011-03-23
    • 2017-05-19
    相关资源
    最近更新 更多