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 もオブジェクトを取るという仕様を読んだので、イベントを専用のオブジェクトにバインドしようとしました。しかし、再び、それはトリガーされませんでした。私はすべてをテストしたように感じます...
更新 私は今、(swfobject から) iframe プレーヤーに切り替えています。これは、playerId と状態を含むイベントを提供するためです:D 間違った ytplayer と 1 週間過ごした後、これは大きな進歩のように感じます。また、yt は、サポートされている場合に html5 を動的に使用できる iframe プレーヤーを使用することを望んでいるようです。