动态创建的 iFrame 上的 YouTube iFrame API

Posted

技术标签:

【中文标题】动态创建的 iFrame 上的 YouTube iFrame API【英文标题】:YouTube iFrame API on dynamically created iFrame 【发布时间】:2014-12-19 06:39:11 【问题描述】:

我正在使用 YouTube iFrame API,因为我需要能够暂停使用 jQuery 动态创建的视频。我有以下代码:

// Load YouTube API
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

$(function() 

  var player;
  
  $(document).on('click', 'button', function()
    
    media = $(this).data('media');
    
    $('#player').append('<div id="media"><iframe   src="http://www.youtube.com/embed/' + media + '?autoplay=1" frameborder="0" allowfullscreen id="media-player"></iframe>');
    
    var player = new YT.Player('media-player');
    
  )
  
  
  $('#pause').click(function()
    
    player.pauseVideo();
    
  );

但是,我收到此错误: 未捕获的类型错误:无法读取未定义的属性“pauseVideo”

谁能指出我正确的方向。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

您再次使用关键字“var”将“播放器”重新定义为首次点击回调的局部变量。去掉第二个“var”

(function() 

  var player;

  $(document).on('click', 'button', function()

    media = $(this).data('media');

    $('#player').append('<div id="media"><iframe   src="http://www.youtube.com/embed/' + media + '?autoplay=1" frameborder="0" allowfullscreen id="media-player"></iframe>');

    player = new YT.Player('media-player');

  )

【讨论】:

以上是关于动态创建的 iFrame 上的 YouTube iFrame API的主要内容,如果未能解决你的问题,请参考以下文章

动态更改 Youtube Iframe playerVars

javascript 和 jQuery 中的动态 youtube iframe

YouTube API 音量控制

在DIV中动态加载Youtube视频Iframe嵌入代码

Chromecast 上的 YouTube iframe api 行为

YouTube iframe 嵌入的 wmode 参数