youtube api // onStateChange 回调函数需要这个!
我想以编程方式创建将监听几个 youtube 播放器发出的“onStateChange”事件的函数。添加监听器已经生效:
function onYouTubePlayerReady(playerId) {
var ytpStateManager = playerId +"_StateManager";
document.getElementById(playerId).addEventListener("onStateChange", ytpStateManager );
...
我需要根据 playerId 变量(“ytp_1”,“ytp_2”,...)创建的函数是
function ytpStateManager(newState) {
ytpStateHelper(playerId , newState);
}
因此 playerId "ytp_1" 的结果如下所示:
function ytp_1_StateManager(newState) {
ytpStateHelper("ytp_1", newState);
}
也可以,但现在我需要为每个玩家手动添加它们,这不是我需要的。我想在新玩家发送 readyState 事件时自动创建它们。
我的问题是,这些函数似乎需要成为全局函数才能正常工作。我已经尝试了好几天了。我的问题是我不知道如何(如果有办法)定义一个全局函数,包括。函数名,以编程方式,基于另一个变量。
令人遗憾的是,ytp 没有发出包含状态和玩家/目标的事件。会让事情变得容易得多。所有这些基本上都是解决方法,因为我需要在所有 stateChanges 上做所有事情。
如果有更好/更简单的方法,请告诉我:) 否则非常欢迎这个问题的解决方案。
也许有一种方法可以重新安排事件,使其更“可访问”?
我在规范中读到 .addEventListener 也接受一个对象,所以我尝试将事件绑定到一个专用对象。但同样,它没有被触发。感觉就像我测试了一切......
更新 我现在切换到 iframe 播放器(来自 swfobject),因为它提供了一个包含 playerId 和 state 的事件:D 耶!在与错误的 ytplayer 一起度过了一周之后,这感觉像是一个巨大的进步。似乎 yt 希望我们使用 iframe 播放器,它可以在支持时动态使用 html5。