【问题标题】:How to get the source or id from youtube player onstatechange callback如何从 youtube 播放器 onstatechange 回调中获取源或 ID
【发布时间】:2013-08-12 19:36:05
【问题描述】:

这是一个类似于how to pass arguments to addeventlistner的问题 但是使用 Youtube player 的 api 的场景有点不同。

所以我在同一页面上有多个 youtube 播放器,使用 swfobject:

swfobject.embedSWF("http://www.youtube.com/v/"+video_id+"?enablejsapi=1&version=3&modestbranding=1&theme=light&color=white&autohide=1&controls=1&showinfo=0&iv_load_policy=3&autoplay=0&playerapiid=<%= "ytPlayer#{index}" %>", "<%= "ytPlayer#{index}" %>", "500", "280", "8", null, null, params);

我在哪里使用 ruby​​ 来生成 ytplayer 对象 ID。 我正在另一个函数中监听 onStateChange 事件。

ytplayer.addEventListener("onStateChange", "onytplayerStateChanged");

function onytplayerStateChanged(newState) {
    if(newState == -1){
        //unstarted
    }else{
        debugger;
    }
}

但问题是我不知道这个事件来自哪个 ytPlayer。 (在 onytplayerStateChanged 函数中找到调用者的来源) 因为我只能通过遵循这个结构的确切实现来捕捉这个事件。我在This one 上尝试了实现,但它不再捕获该事件。

【问题讨论】:

  • 你能把这个放在 jsfiddle 里吗?我不熟悉 youtube API,但这看起来可以通过更改范围来解决。
  • 也许我误解了这个问题,但听起来你需要为每个 uniqe 播放器设置多个事件监听器,而不是只有一个。

标签: javascript youtube-javascript-api


【解决方案1】:

我认为您可以嵌入一个 Id,然后将侦听器添加到动态函数中,如下所示: How to display multiple YouTube videos without overlapping audio

window["dynamicYouTubeEventHandler" + embedid] = function(state) { onytplayerStateChange(state, embedid); }
ytplayer.addEventListener("onStateChange", "dynamicYouTubeEventHandler"+embedid);

(...)

function onytplayerStateChange(newState, playerId) 

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多