2012-05-11 134 views
1

我有一個嵌入的Youtube視頻,我想捕捉事件,當用戶暫停視頻,跳過等等。繼谷歌的文檔(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); 

但它也不起作用。 (該問題的作者說,他最終通過在我的colorbox中放置「onComplete並將swfobject放入其中」來解決此問題,但我在這裏沒有使用colorbox(我甚至不知道它是什麼),所以我不明白他的意思

使用alerts()進行調試,我看到第一個函數(onYoutubePlayerReady())確實被調用,但我甚至無法分辨事件偵聽器是否未被註冊還是那就是不正常的的getElementById();我試着調試通過添加:後

alert(typeof youtubeplayer); 

權,但它甚至不彈出

哦,還有一件事:視頻在Firefox和Safari中自動啓動,但在IE中它也不會。 (是的,我在服務器上運行,而不是在本地頁面上運行)。

任何人有任何想法?我真的不知道還有什麼可以嘗試的。

回答

4

好的,找到了解決辦法。猜猜是什麼?只需寫爲:

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

而且它在IE 8中完美工作。它需要的只是「var」關鍵字。

以防萬一它對其他人有同樣的問題有用...

相關問題