1

次のコードがあります。ここで、プレイリスト内のビデオのリストを console.logout できるようにしたいと考えています。

function onYouTubePlayerReady(playerId) {
        ytplayer = document.getElementById("myytplayer");

        ytplayer.cuePlaylist({
            list:"PLf71xE2jRgTXB_LeUJkXxFwCc4r1z5if3"
        });
        console.log(ytplayer.getPlaylist());
}

しかし、getPlayList() メソッドは空の配列を返すだけです。

この関数の外から getPlaylist() を呼び出すと、いじってみると、正しい配列が返されます。このメソッドがここで空の配列を返すのはなぜですか? プレイリスト配列を取得するにはどうすればよいですか?

どうもありがとう。

4

1 に答える 1

0

自分でこの問題に出くわしました。この問題は、プレーヤーの癖であり、YouTube (google) が「準備完了」をどのように定義しているかのようです。

プレーヤの「クロム」がレンダリングを終了したとき (つまり、HTML ドキュメントに関連付けられたとき) に、プレーヤの onReady 関数が起動するようです。実際のプレーヤー データ (ビデオまたはプレイリスト) は非同期で読み込まれるため、任意の時点で準備が整います。

プレイヤーの状態変更イベントを確認する簡単な回避策を配置しました

var firstLoad = true;
function onPlayerStateChange(e) {
  if (firstLoad && e.data == YT.PlayerState.CUED) {
      //First Cued event - playlist is now available
      firstLoad = false
      myPlaylistFunction(player.getPlaylist());
  }
}
于 2013-08-03T18:55:31.390 に答える