2010-06-04 70 views
2

我正在嘗試使用youtube的javascript api,並且在初始化它時遇到問題/在準備好時收到回調。 Api文檔可以在here找到。youtube javascript api不會觸發回調

我碰到由YouTube提供的JSON的視頻和嵌入他們是這樣的:

//insert flash object in video element 
     $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
            '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1"></param>' + 
            '<param name="allowFullScreen" value="true"></param>' + 
            '<param name="allowscriptaccess" value="always"></param>' + 
            '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' + 
            '</object>'); 

請注意,我加入「enablejsapi = 1」,應使JavaScript API的網址。但是,當我收聽api準備就緒的回調時,即:

//set player functionality when javascript api is available 
    function onYouTubePlayerReady(playerId) { 
    alert('api is ready!'); 
    } 

它永遠不會被觸發。網頁上的其他所有內容(包括youtube視頻)都可以正確加載,甚至我在視頻網址(showinfo = 0)中傳遞的其他參數也能正常運行。是什麼賦予了?任何人看到我的錯誤?所有幫助非常感謝...

+0

我知道YouTube建議「SwfObject的」,但它不是我的情況選擇... – danwoods 2010-06-05 01:45:53

+0

我發現解決這個問題(只使用縮略圖是合理的什麼,我需要)的方式,但我'd仍然想知道答案:) – danwoods 2010-06-05 04:44:43

回答

1

頁面是從服務器(即不是從本地計算機)提供?如果頁面在本地提供,Youtube(或一般的Flash)不允許與JavaScript交互。

0

嘗試將URL添加到&playerapiid=THEPLAYERIDYOUWANTPASSEDIN。這將作爲「playerId」參數發送到回調函數。

//insert flash object in video element 
     $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
            '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1&playerapiid=' + i + '"></param>' + 
            '<param name="allowFullScreen" value="true"></param>' + 
            '<param name="allowscriptaccess" value="always"></param>' + 
            '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' + 
            '</object>');