YouTube player iframe API: playVideo doesn't work on Firefox 9.0.1

后端 未结 4 1822
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-15 18:16

I\'ve got some YouTube embedding code (I will paste only code which is causing the trouble for me and cut things which are not public):

console.log(ytplayer);
yt         


        
4条回答
  •  梦如初夏
    2021-02-15 18:30

    A more robust way to do that is to check if the player is ready. If the player is not ready, queue player.playVideo() and execute it when it is ready using the onReady event. Gist

    var playerConfig = {},                 // Define the player config here
        queue = {                          // To queue a function and invoke when player is ready
          content: null,
          push: function(fn) {
            this.content = fn;
          },
          pop: function() {
            this.content.call();
            this.content = null;
          }
        },
        player;
    
    window.onYouTubeIframeAPIReady = function() {
      player = new YT.Player('player', {
        videoId: 'player',
        playerVars: playerConfig,
        events: {
          onReady: onPlayerReady
        }
      });
    };
    
    // API event: when the player is ready, call the function in the queue
    function onPlayerReady() {
      if (queue.content) queue.pop();
    }
    
    // Helper function to check if the player is ready
    function isPlayerReady(player) {
      return player && typeof player.playVideo === 'function';
    }
    
    // Instead of calling player.playVideo() directly, 
    // using this function to play the video. 
    // If the player is not ready, queue player.playVideo() and invoke it when the player is ready
    function playVideo(player) {
      isPlayerReady(player) ? player.playVideo() : queue.push(function() {
                                                   player.playVideo();
                                                 });
    } 
    

提交回复
热议问题