javascript - 在 jQuery 中加载 YouTube API

标签 javascript jquery asynchronous youtube-api

我正在尝试加载 YouTube 的 iframe API。到目前为止,我要做的就是制作和加载播放器。它似乎加载了 API,但随后无法将“YT.Player()”识别为构造函数。在 chrome js 控制台中,我在该行遇到的确切错误是:

    Uncaught TypeError: undefined is not a function 

那么……我究竟做错了什么?我在这件事上到处都是 console.log 语句,并尝试以几种方式重写它。我试过将 api 复制到本地文件中。我试过用常规脚本标签加载它。我已经尝试用他们在 api 引用中使用的古怪的 DOM 修改加载它 https://developers.google.com/youtube/iframe_api_reference .我很确定下面的代码应该有效:

    function youtubeAPIReady(script, textStatus, jqXHR)
    {
        player = new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: 'CxTtN0dCDaY'
        });
    }

    function readyFunction()
    {
        $.getScript("https://www.youtube.com/iframe_api", youtubeAPIReady);
    }

    jQuery(document).ready(readyFunction);

有什么帮助吗?

最佳答案

可以借用技巧used in YouTube Direct Lite推迟加载 JavaScript 直到明确需要它:

var player = {
  playVideo: function(container, videoId) {
    if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
      window.onYouTubeIframeAPIReady = function() {
        player.loadPlayer(container, videoId);
      };

      $.getScript('//www.youtube.com/iframe_api');
    } else {
      player.loadPlayer(container, videoId);
    }
  },

  loadPlayer: function(container, videoId) {
    new YT.Player(container, {
      videoId: videoId,
      width: 356,
      height: 200,
      playerVars: {
        autoplay: 1,
        controls: 0,
        modestbranding: 1,
        rel: 0,
        showInfo: 0
      }
    });
  }
};

关于javascript - 在 jQuery 中加载 YouTube API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18139277/

相关文章:

javascript - 无法将 $.get 返回的数据传递给 JavaScript 中的变量或数组

javascript - Node.js 进程未检测到端口已被使用

R Shiny 的 future : plan(multiprocess)/plan(multicore) + Kill long running process

javascript - 附加到 DOM 时 XML 属性变为小写

javascript - 如何使用 fetch API 取回数组?

javascript - 待办事项列表应用程序的 ReactJS 代码中未定义映射

javascript - 循环遍历所选元素及其子元素的所有类和 ID

javascript - Pick CSS for IE8 可在模拟器中运行但不能直接在 IE8 上运行

javascript - 如何等待异步函数返回?

javascript - 延迟加载与 ScrollTo anchor 到 ID 滚动冲突 - 在页面中途停止