1

このテストスライダーがありますhttp://jsfiddle.net/dUyLY/2/

Chrome では問題なく動作しますが、Firefox と Safari ではアニメーションが完了するとバグが発生します。スクリプト ファイルでは、各アニメーションの後に、現在表示されている要素が YouTube プレーヤーであるかどうかを確認し、そうであればビデオを再生します。スライドを離れるときは一時停止します。

コンソールにこのエラーが表示されますplayer.pauseVideo is not a function

誰にもこれに対する解決策がありますか?

4

1 に答える 1

5

の定義を延期していますonYouTubePlayerAPIReady。このため、YouTube APIonYouTubePlayerAPIReadyが定義される前に終了する可能性があります。その場合、コードは失敗します。

この問題を解決するには、実行時に API の準備ができているかどうかを確認します。

window.onYouTubePlayerAPIReady = function () {
    player = new YT.Player('player', {
        height: '315',
        width: '560',
        videoId: 'bpOR_HuHRNs',
    });
};
if (window.YT) {
    // Apparently, the API was ready before this script was executed.
    // Manually invoke the function
    onYouTubePlayerAPIReady();
}

ノート。player.playVideo()やなどの単純な一方向関数についてplayer.pauseVideo()は、この単純な関数を使用することをお勧めします。これは、文書化された YouTube API ほど肥大化していません。この回答を参照してください。

callPlayerこれは、YouTube API の代わりに私の他の回答の関数を使用して、ページの更新された部分です: http://jsfiddle.net/ryyCZ/

<div id="player">
  <iframe width="560" height="315" frameborder="0" src="http://www.youtube.com/embed/bpOR_HuHRNs?enablejsapi=1"></iframe>
</div>

if ($(".slides_control > div:visible #player").length == 1) {
    callPlayer("player","playVideo");
} else {
    callPlayer("player", "pauseVideo");
}
于 2012-07-02T13:00:03.760 に答える