onYouTubeIframeAPIReady called once but multiple videos needed on a page

前端 未结 3 1189
猫巷女王i
猫巷女王i 2020-12-11 21:04

I am using a server-side method to drop in YouTube videos with playlists and functioning buttons (think of a website widget that can be called anyway on a page, and potentia

3条回答
  •  渐次进展
    2020-12-11 21:28

    I've implemented enqueueOnYoutubeIframeAPIReady function for adding callbacks to queue, so you can add as many callbacks as you want. It will fire the callback immediately if API is ready.

    (function () {
      var isReady = false
      var callbacks = []
    
      window.enqueueOnYoutubeIframeAPIReady = function (callback) {
        if (isReady) {
          callback()
        } else {
          callbacks.push(callback)
        }
      }
    
      window.onYouTubeIframeAPIReady = function () {
        isReady = true
        callbacks.forEach(function (callback) {
          callback()
        })
        callbacks.splice(0)
      }
    })()
    

    Usage:

    enqueueOnYoutubeIframeAPIReady(function () {
      var player = new YT.Player('player1', { ... })
    })
    
    // Second player
    enqueueOnYoutubeIframeAPIReady(function () {
      var player = new YT.Player('player2', { ... })
    })
    

提交回复
热议问题