我想在播放YouTube时停止其他视频

时间:2018-09-16 02:11:42

标签: javascript php html5 youtube-api youtube-javascript-api

我正在使用以下代码控制多个YouTube。

在播放当前视频时如何停止其他视频?

Sample

HTML

<div id="youtube_p_c6uQHlhZ0" class="videos_youtube">
    <img src="http://i.ytimg.com/vi/p_c6uQHlhZ0/mqdefault.jpg">
</div>

<div id="youtube_4TF2unP74tc" class="videos_youtube">
    <img src="http://i.ytimg.com/vi/4TF2unP74tc/mqdefault.jpg">
</div>

<button id="play">play</button>
<button id="pause">pause</button>

JavaScript

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

// Embed YouTube after clicking
$('body').on("click",".videos_youtube",function(){

  var click_Id = $(this).attr('id');
  var target_Id = document.getElementById(click_Id);
  var click_VideoId = $(this).attr('id').replace('youtube_','');

  target_Id.addEventListener('click', function() {
    var ytArea = target_Id;
    var ytID = click_VideoId;
    ytPlayer = new YT.Player(ytArea, {
      width: 640,
      height: 390,
      videoId: ytID
    });
  }, false);

  // Control
  $('#play').click(function() {
    ytPlayer.playVideo();
  });
  $('#pause').click(function() {
    ytPlayer.pauseVideo();
  });

})(jQuery);

1 个答案:

答案 0 :(得分:0)

将每个新的视频播放器添加到阵列中,并在需要时对其进行遍历。

如果确实需要以下内容,那就是暂停其他视频的播放按钮。

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

// Embed YouTube after clicking
$('body').on("click",".videos_youtube",function(){

  var click_Id = $(this).attr('id');
  var target_Id = document.getElementById(click_Id);
  var click_VideoId = $(this).attr('id').replace('youtube_','');
  
  target_Id.addEventListener('click', function() {
    var ytArea = target_Id;
    var ytID = click_VideoId;
    ytPlayer = new YT.Player(ytArea, {
      width: 640,
      height: 390,
      videoId: ytID
    });
    ytPlayers.push(ytPlayer);
  }, false);

	// Control
  $('#play').click(function() {
  	for (var ytIndex in ytPlayers) {
    	ytPlayers[ytIndex].pauseVideo();
    }
    
    ytPlayer.playVideo();
  });
  $('#pause').click(function() {
    ytPlayer.pauseVideo();
  });

})(jQuery);

Sample

或者,如果状态更改为 PLAYING

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

// Embed YouTube after clicking
$('body').on("click", ".videos_youtube", function() {

  var click_Id = $(this).attr('id');
  var target_Id = document.getElementById(click_Id);
  var click_VideoId = $(this).attr('id').replace('youtube_', '');

  target_Id.addEventListener('click', function() {
    var ytArea = target_Id;
    var ytID = click_VideoId;
    ytPlayer = new YT.Player(ytArea, {
      width: 640,
      height: 390,
      videoId: ytID,
      events: {
        'onStateChange': function(event) {
          if (event.target.getPlayerState() == YT.PlayerState.PLAYING) {
            // Pause others
            for (var ytIndex in ytPlayers) {
              if (ytPlayers[ytIndex] != event.target) {
                ytPlayers[ytIndex].pauseVideo();
              }
            }
          }
        }
      }
    });

    ytPlayers.push(ytPlayer);
  }, false);

  // Control
  $('#play').click(function() {
    ytPlayer.playVideo();
  });
  $('#pause').click(function() {
    ytPlayer.pauseVideo();
  });

})(jQuery);

Sample