4

プログラムで停止する必要があるYouTubeビデオiframeがHTMLに埋め込まれていますが、iframeのIDを設定できません。したがって、ドキュメントで指定されているように、iframe IDではなくYT.PlayerコンストラクターにDOM要素を渡して、YouTubeオブジェクトを作成しようとしています。また、iframe srcurlの最後に「?enablejsapi=1」を追加しました。

次のコードを使用して、jsファイルの先頭にyoutubejsapiをロードしました。

var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubePlayerAPIReady(){ console.log('yt api ready'); }

その後、次のコードがあります。

$(function(){
    $('a.close').click(function(){
        var player = new YT.Player($('iframe').get(0));
        player.stopVideo();
    });
})

出力を取得します:

yt api ready
Uncaught TypeError: Object [object Object] has no method 'stopVideo'

どういうわけかオブジェクトのインスタンス化を台無しにしていると思いますが、これを正しく行う方法がわかりません。コンストラクターにiframeIDを渡さずにYT.Playerオブジェクトを作成するにはどうすればよいですか?助けてくれてありがとう。

4

1 に答える 1

3

ビデオの停止呼び出しをプレーヤー オブジェクトの Ready イベントに移動する必要がありました。次の変更は私のためにそれを修正しました

次の機能を追加しました。

function onMyPlayerReady(event) { event.target.stopVideo(); }

yt.player コンストラクターを次のように変更しました。

new YT.Player($('iframe').get(0), { events: { 'onReady': onMyPlayerReady } });
于 2012-04-22T19:43:39.370 に答える