jquery - 无法通过api调用暂停访问youtube嵌入式iframe

标签 jquery iframe youtube youtube-api youtube-javascript-api

使用自定义按钮,我想暂停以下嵌入式youtube视频:

<iframe id="video1" width="970" height="546" src="https://youtube.com/embed/9IYRC7g2ICg?enablejsapi=1&autoplay=1&controls=0&loop=1&playlist=9IYRC7g2ICg&showinfo=0&modestbranding=0" frameborder="0" allowfullscreen></iframe>

现在,当单击自定义暂停按钮时,它将暂停视频:
<script type="text/javascript">
  jQuery(document).ready(function($) {
     var ytplayer = new YT.Player('video1');
     $.getScript("http://www.youtube.com/player_api");

     $('#button').click(function() {
        ytplayer.pauseVideo();
     });
    });
</script>

我感到这条线以某种方式失败了:
var ytplayer = new YT.Player('video1');

任何帮助,将不胜感激! :)

最佳答案

关于脚本命令顺序的一些问题。首先,当您创建YT.player对象时,必须在Google的YouTube API库加载后进行。为了确保这一点,在加载库时,它将调用名为“onYouTubeIframeAPIReady”的函数,您需要定义该函数。不过,诀窍在于必须在jQuery的document.ready()函数之外定义函数(以便在脚本加载并尝试调用它时就可以使用该函数)。像这样:

var ytplayer;

jQuery(document).ready(function($) {
      $.getScript("http://www.youtube.com/player_api");
      $('#button').click(function() {
        ytplayer.pauseVideo();
      });
 });

 function onYouTubeIframeAPIReady() {
   ytplayer = new YT.Player('video1', {});
 }

另外,在您的iFrame中,将src脚本更改为包括www子域(即https://www.youtube.com/embed/..),以避免在域不完全匹配的情况下拒绝api调用的可能性。

这是一个jsfiddle进行演示。

关于jquery - 无法通过api调用暂停访问youtube嵌入式iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683666/

相关文章:

javascript - 使用 Javascript 对象文字存储变量

javascript - 如何设置标题以在完整日历中仅显示月份名称

javascript - 给定一个 ISO 8601 weeknumber,你将如何获得该周内的日期

javascript - 如何找到 YouTube 的所有 ahref 链接并将其删除?

youtube - 如何在我的网站上放置实时 YouTube 订阅者计数器

javascript - 使用 HTML5 视频禁用自动播放和显示控件

javascript - 单击 iframe 中的 url 时关闭 iframe

javascript - 如何在点击div时执行代码?

html - iframe 视频与 ios 上的填充容器重叠

youtube - 如何在Java中获取Youtube直播事件的聊天内容