2015-04-25 12 views
1

YouTube播放器,具有此處理onStateChange事件:的Youtube IFRAME API:區分 「打,因爲點擊」 與 「打,因爲調用playVideo()」

function onPlayerReady(event) { 
    if (event.data == YT.PlayerState.PLAYING) { 
     if (event.something) { 
      console.log("The player is playing because the user clicked the 'play' button") 
     } else { 
      console.log("The player is playing because player.playVideo() was called programatically"); 
     } 
    } 
} 

問:
有沒有財產,something,在對象event,我可以用它來確定playing state的來源?

我需要區分在兩個可能的原因playing state

  • 播放,因爲用戶點擊「播放」按鈕
  • 玩,因爲代碼編程稱爲player.playVideo()

這是可能與API?如果沒有,如何以優雅的方式實現它的任何想法?

+0

也許如果這是不可能通過事件屬性,我可以包裹整個球員在一個無形的DIV並使用'clickedOnDiv'標誌? 'if(clickedOnDiv){clickedOnDiv = false; }' – sports

回答

0

YouTube Iframe Player API不會從播放器控件本身暴露任何事件,並且我不認爲將事情包裝在DIV中會有所幫助,因爲點擊事件不會通過iFrame起泡。您可以嵌入一個無鉻玩家,然後構建您自己的玩家控制欄;這樣,您可以完全訪問您的控制按鈕,並可以捕獲點擊事件。

+0

這是一個嬰兒潮。如果DIV位於iframe的頂部(z-index),該怎麼辦?因此,在播放器中的每次點擊都是div的點擊 – sports

+0

你能解釋一下「嵌入無鉻播放器」的含義嗎? youtube視頻有可能嗎?有我自己的控制(播放,暫停和時間軸拖動)將是最好的 – sports

+0

問題是,如果你把div放在iframe的頂部,它捕獲點擊,那麼下面的按鈕將永遠不會收到這些點擊。無鉻球員是最好的選擇。您無需任何控件即可加載YouTube視頻,在HTML中創建自己的視頻,並將按鈕綁定到播放器JavaScript API的不同方法。這裏有一個很好的答案,可以讓你開始一個SO問題:http://stackoverflow.com/questions/22745862/js-youtube-api-chromeless-player – jlmcdonald

相關問題