2012-05-11 4 views
1

私はYoutubeビデオが埋め込まれていて、ユーザーがビデオを一時停止したり、スキップしたりしたときにイベントをキャプチャしたいと思います.Googleのドキュメント(http://developers.google.com/youtube/js_api_reference)の例に従って、 :Youtube Javascript API:IEで動作しない

var video = (my video ID here); 
var params = { allowScriptAccess: "always" }; 
var atts = { id: "youtubeplayer" }; 
var x = 854; 
var y = 480; 
swfobject.embedSWF("http://www.youtube.com/v/" + video + "?enablejsapi=1&playerapiid=ytplayer&version=3", "bobina", x, y, "8", null, null, params, atts); 

function onYouTubePlayerReady(playerId) { 
     youtubeplayer = document.getElementById('youtubeplayer'); 
     youtubeplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
     youtubeplayer.setPlaybackQuality('large'); 
     } 

function onytplayerStateChange(newState) { 
    //Make it autoplay on page load 
    if (newState == -1) { 
     youtubeplayer.playVideo(); 
     } 

    var tiempo=youtubeplayer.getCurrentTime(); 
    //Rounds to 2 decimals 
    var tiempo = Math.round(tiempo*100)/100; 
    alert(tiempo); 
    } 

、このすべては、FirefoxとSafariで完璧に動作しますが、それは私が意味するこれによって、IE8(で動作させるために方法はありません:ビデオ負荷は、しかしイベントはキャプチャしませんされていません。イベントハンドラを決して呼び出される)。 javascript addEventListener onStateChange not working in IEによると、IEは、addEventListenerを()をサポートしていないので、私はそのラインを交換しようとした:

youtubeplayer.attachEvent("onStateChange", onytplayerStateChange); 

しかし、それはどちらか動作しません。 (その質問の著者は、彼は最終的に "oncompleteを私のカラーボックスに入れ、それにswfオブジェクトを入れて解決しました"と言っていますが、私はここにカラーボックスを使っていません

デバッグにアラート()を使用すると、最初の関数(onYoutubePlayerReady())が実際に呼び出されていることがわかりますが、イベントリスナーが登録されていないかどうかはわかりませんまたはそれが機能していませんgetElementByIdを()のかどうか、私は追加することで、デバッグを試してみました:右それの後

alert(typeof youtubeplayer); 

を、しかしそれも

ああをポップアップ表示しません、と。もう1つ:FirefoxとSafariでビデオが自動的に開始されますが、IEではそれもありません。 (そして、はい、私はローカルページではなくサーバー上でこれを実行しています)。

誰にでもアイデアはありますか?私は他に何を試していいのか分かりません。

答えて

4

さて、解決策を見つけました。それは何だったのでしょうか?

var youtubeplayer = document.getElementById('youtubeplayer'); 

これは完全にIE 8で動作します。必要なものはすべて「var」キーワードだけです。

同じ問題を抱えている他の人にも便利です...

関連する問題