如何获取现有YouTube播放器的参考?

Max*_*s S 23 javascript youtube iframe youtube-api

<iframe width="560" height="315" src="//www.youtube.com/embed/M7lc1UVf-VE" frameborder="0" allowfullscreen></iframe>

关于使用上述源代码嵌入YouTube视频时会发生什么,我有几个问题.该代码应生成一个YouTube播放器对象,以用户喜欢的方式处理视频.当我使用Youtube Player API(而不是使用嵌入代码)自己生成Youtube播放器时,我可以在其上调用调用函数.

var player;
function onYouTubeIframeAPIReady() {
  player = new YT.Player('player', {
    height: '390',
    width: '640',
    videoId: 'M7lc1UVf-VE',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

//player.playVideo(); will play the video.
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何控制嵌入代码生成的播放器对象?换句话说,从http://www.youtube.com/watch?v=M7lc1UVf-VE页面,如何通过调用来播放视频SOMEPlayer.playVideo()?当你转到网址时,ytplayer对象可用,但它似乎不包含必要的功能.

这个问题可能与此重复.

Max*_*s S 30

这可以像下面这样完成.

鉴于一般的YouTube嵌入源代码:

enablejsapi

一个.添加enablejsapi参数并将其设置为true

的index.html

enablejsapi

湾 给它一个唯一的ID

enablejsapi

C.加载iFrame API并创建引用现有iFrame的播放器

的application.js

<iframe width="560" height="315" src="//www.youtube.com/embed/M7lc1UVf-VE" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

  • @spideep这应该起作用:http://jsfiddle.net/bf7zQ/2/您必须传递`?enablejsapi = 1`,并且必须使用`https://`。 (2认同)

小智 28

var player = YT.get('id-of-youtube-iframe');
Run Code Online (Sandbox Code Playgroud)


Tim*_*hiy 5

Maximus S给出了一个完美正确的答案.官方的YouTube IFrame播放器API 文档建议通过iframe的唯一ID初始化播放器,视频为var yPlayer = new YT.Player('unique-id');.

对于此问题的未来读者,寻找一种从ifAs元素的引用生成YouTube播放器的方法(如我自己),可以通过运行var yPlayer = new YT.Player(iframeElement);if type="text/html"iframe元素添加属性并设置enablejsapi=1参数来实现该src属性:

<iframe type="text/html" height="360" width="640" src="https://www.youtube.com/embed/jNQXAC9IVRw?enablejsapi=1"></iframe>

完整片段