youtube - 检索页面上多个 YouTube 播放器的播放器状态

标签 youtube youtube-api youtube-javascript-api

我有一个包含许多 YouTube 播放器的 HTML。

我订阅 onStateChange 以便在用户播放视频时收到通知。

function onYouTubePlayerReady(playerid) {
    var player = document.getElementById("playerA");
    player.addEventListener("onStateChange", "callback");
}

现在回调获取 newState 作为参数。

function callback(newState) {
    ...
}

只有一名玩家可以正常工作。 但是对于很多玩家,我如何知道哪个玩家引发了 StateChange 事件?回调只有一个参数。

有没有办法知道哪个玩家引发了事件表单回调,或者我必须为每个玩家设置不同的回调?

最佳答案

这是我基于其他答案的解决方案:

(1) 将 id 参数添加到对象和/或嵌入标签

(2) 添加playerapiid视频网址参数(应与 id 匹配)

<object id="video1" data="http://www.youtube.com/v/AAAAAAAAAAA&version=3&enablejsapi=1&playerapiid=video1" ...>
    <embed ...>
</object>
<object id="video2" data="http://www.youtube.com/v/BBBBBBBBBBB&version=3&enablejsapi=1&playerapiid=video2" ...>
    <embed ...>
</object>

(3) 为每个视频创建命名回调函数,并将其分配给 onYouTubePlayerReady 事件中的播放器。这是一种实现方法:

function onYouTubePlayerReady(playerApiId) {
  var player = document.getElementById(playerApiId);
  window["onStateChange" + playerApiId] = function(state) {
    console.log("#" + playerApiId + ": new state " + state);
  };
  player.addEventListener("onStateChange", "onStateChange" + playerApiId);
}

我发布了demo here .

关于youtube - 检索页面上多个 YouTube 播放器的播放器状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718404/

相关文章:

youtube - 可点击的预览图片,可自动加载YouTube视频

ios - 使用YTPlayerView在iOS应用中获得更好的视频预览质量

jquery - 使用 jquery api 从 youtube 获取数据不起作用

javascript - 内容脚本中的 addEventListener 不起作用

ios - 我不想在 UIWebview 中自动播放 play youtube video

go - Youtube Content ID API 总是返回 Not Found

javascript - 将 div 悬停在 youtube 视频的顶部

php - 自动嵌入 YouTube 直播

javascript - 如何从 JSON 文件嵌入 youtube 链接

jquery - YouTube iframe api - 为什么 onError 事件被调用两次?