2012-04-04 70 views
0

我一直在抨擊我的頭這一段時間了,需要一些新鮮的眼光:的YouTube onStateChange事件不工作

我試圖使用YouTube JS API調用函數時,嵌入的視頻狀態變化。但由於某些原因,事件dosnt似乎在解僱,而我在控制檯中沒有收到任何錯誤。

HTML:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="630" height="350" id="bannerVideo"> 
    <param name="movie" value="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" /> 
    <param name="allowfullscreen" value="true" /> 
    <param name="allowscriptaccess" value="always" /> 
    <!--[if !IE]>--> 
    <object type="application/x-shockwave-flash" data="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" width="630" height="350"> 
     <param name="allowfullscreen" value="true" /> 
     <param name="allowscriptaccess" value="always" /> 
     <!--<![endif]--> 
     <a href="http://www.adobe.com/go/getflashplayer"> 
      <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> 
     </a> 
     <!--[if !IE]>--> 
    </object> 
    <!--<![endif]--> 
</object> 

的Javascript:

function onYouTubePlayerReady(playerId) { 
    //alert(playerId); 
    ytplayer = document.getElementById("bannerVideo"); 
    //alert(2); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
    //alert(3); 
    //ytplayer.addEventListener("click", function(){alert('click');}); 
} 

function onytplayerStateChange(newState) { 
    alert("Player's new state: " + newState); 
} 

範例網站: http://dev.stewartknapman.com/ytPlayer/

我使用的代碼是在YouTube API的網站直接複製&粘貼和我使用swf對象來嵌入代碼。我正在使用靜態嵌入,因爲我會用php來改變一些東西,但這不應該重要......對吧? 我將所有代碼移出到它自己的文件中,僅用於測試,並將其託管在我的開發服務器上,因此它不應該是沙盒問題。 爲了確保addEventListener函數不失敗,我也在每行之後嘗試了警告。 (我在示例代碼中留下了警報,但將它們評論出來了。)

在搜索以前發佈的關於此錯誤的帖子後,我發現它們都是通過將ID添加到正確的元素或解析回調函數串。所以我加倍和三重檢查這些事情,但這似乎不是問題。

任何幫助將不勝感激。

回答

1

您是否試過使用SWFObject方法初始化Flash嵌入(如YouTube API概述)?

var params = { allowScriptAccess: "always" }; 
var atts = { id: "myytplayer" }; 
swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer&version=3", 
        "ytapiplayer", "425", "356", "8", null, null, params, atts); 

用上述替換您的標籤並將其配置爲您的設置。

+0

更改嵌入方法的工作。 謝謝你。 注意年輕球員:使用這種嵌入方式而不是靜態發佈方法。 – 2012-04-04 03:29:29