javascript - YouTube API - 嵌入式 iframe 上的事件不起作用

标签 javascript jquery youtube youtube-api

我正在尝试使用 YouTube API 在 AMP(加速移动页面)创建的 YouTube 视频上获取“暂停”事件,基本示例为:https://ampbyexample.com/components/amp-youtube/

代码有效,我得到了一个视频显示。我想做的下一件事是在视频暂停时做一些事情。我已经了解了如何执行此操作,并且获得了当前代码:

//The iframe generated from AMP does not give an ID so I have added one
$('#AMP_1 iframe').attr('id', 'yt_player');

//Load API code
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 player;
 function onYouTubeIframeAPIReady() {
  player = new YT.Player('yt_player', {
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

function onPlayerReady() {
  console.log("READY");
}

function onPlayerStateChange() {
  console.log("STATE CHANGE");
}

当我运行此命令时,我没有收到控制台错误,并且所有 console.log 调用都没有显示任何内容。玩家变量保持未定义状态。

AMP 生成的 iframe 的 URL 中确实包含“enablejsapi=1”。

我需要做任何事情/我是否遗漏了什么才能获得视频上的暂停事件?

最佳答案

您需要在函数 onPlayerStateChange 上有一个参数才能获取事件数据。

function onPlayerStateChange(event) {
    switch(event.data){
        case 2:
            console.log("PAUSE!")
            break;
    }
}

其他event.data列表

  • -1(未启动)
  • 0(已结束)
  • 1(正在播放)
  • 2(暂停)
  • 3(缓冲)
  • 5(视频提示)。

关于javascript - YouTube API - 嵌入式 iframe 上的事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108250/

相关文章:

JavaScript 在部分 View MVC 中失败

javascript - jQuery UI slider 在 BMI 计算器中未正确更新

api - YouTube API和复杂搜索

python - 接受 Youtube 的 cookie 同意

php - JQuery 用户名验证

javascript - TinyMCE v4 右对齐按钮不适用于 iframe

javascript - 函数外的 'return' 问题

javascript - 如何删除plotly.js中的轴悬停信息?

javascript - 如何测试 MD5 实现?

jquery - 在 html 页面之间转换时,如何设置 jquery 链接的基本 URL