2013-02-21 63 views
4

我想加載YouTube視頻,然後立即靜音,播放,暫停和取消靜音。在這樣做的時候,我希望向用戶展示一個沒有大的播放按鈕的視頻,並且底部有控件。爲了做到這一點,我有以下代碼:爲什麼YouTube上的iframe播放器在加載時不會調用YouTubePlayerReady?

<script type="text/javascript"> 
function onYouTubePlayerReady(playerid) 
{ 
    mutePlayPauseUnmute(playerid); 
} 
function onYouTubePlayerAPIReady(playerid) 
{ 
    mutePlayPauseUnmute(playerid); 
} 
function onYouTubeIframeAPIReady(playerid) 
{ 
    mutePlayPauseUnmute(playerid) 
} 
function onPlayerReady(playerid) 
{ 
    mutePlayPauseUnmute(playerid) 
} 

function mutePlayPauseUnmute(playerid) 
{ 
    var player = document.getElementById(playerid); 
    player.mute(); 
    player.playVideo(); 
    player.pauseVideo(); 
    player.unMute(); 
} 
</script> 
<iframe id="quotedVideo1" type="text/html" width="246" height="160" src="https://www.youtube.com/embed/NWHfY_lvKIQ?modestbranding=1&rel=0&showinfo=0&autohide=1&iv_load_policy=3&theme=light&enablejsapi=1&playerapiid=quotedVideo1" frameborder="0"> <!-- Magic Comment --> </iframe> 

然而,經檢查,既不onYouTubePlayerReadyonYouTubePlayerAPIReadyonYouTubeIframeAPIReadyonPlayerReady,也不mutePlayPauseUnmute是不斷調用。 我做錯了什麼?根據https://developers.google.com/youtube/js_api_reference#onYouTubePlayerReady它看起來應該工作,但它不。

+0

值得注意的是:「玩家必須至少200px x 200px。」 – 2013-02-21 18:53:06

+0

我知道......客戶要求它完全是這個尺寸:/ – Supuhstar 2013-02-21 23:12:23

回答

11

您在這裏混淆了兩個不同的播放器API。

是否要使用iframe播放器?如果是這樣,你會想看看:https://developers.google.com/youtube/iframe_api_reference

而不是定義onYouTubePlayerReady,您需要定義以下方法:onYouTubeIframeAPIReady,創建您的播放器,然後指定一個onPlayerReady回調。

確保你包括的JavaScript的iframe播放器API,以便onYouTubeIframeAPIReady被稱爲:

var tag = document.createElement('script'); 
tag.src = o.protocol + "://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

值得的文檔指出,因爲你寫的iframe,而不是使用JavaScript來爲你做的:

如果你寫的代碼,那麼當你構建 YT.Player對象,你並不需要爲寬度和0指定值高度,指定爲標記的屬性,或者在src URL中指定的videoId和播放器參數。

此外,在您的mutePlayPauseUnmute功能..

playerid.mute(); 
playerid.playVideo(); 
playerid.pauseVideo(); 
playerid.unMute(); 

你想觸發實際的而不是在playerid上述對player方法。

+0

爲什麼你引用關於在標籤中放置寬度和高度的文檔部分?我做到了...... – Supuhstar 2013-02-21 17:06:49

+0

問題更新 – Supuhstar 2013-02-21 17:14:17

+0

當您詢問iframe播放器時,您仍然引用JS API。他們不一樣!即使您編寫iframe標籤,實際上也必須導入JS,並隨後創建YT.Player對象....查看上面的鏈接,搜索「加載視頻播放器」。 **在API的JavaScript代碼加載後,該API將調用onYouTubeIframeAPIReady函數** – 2013-02-21 18:55:46

相關問題