2016-09-03 19 views
1

ないPlayer.seekTo機能が_player2.default.seekTo is not a functionで失敗しかしPlayer.seekToは、私は次のinit持っている機能

onReady(videoId, socket){ 
    let msgContainer = document.getElementById("msg-container") 
    let msgInput  = document.getElementById("msg-input") 
    let postButton = document.getElementById("msg-submit") 
    let vidChannel = socket.channel("videos:" + videoId) 

    postButton.addEventListener("click", e => { 
     let payload = {body: msgInput.value, at: Player.getCurrentTime()} 
     vidChannel.push("new_annotation", payload) 
      .receive("error", e => console.log(e)) 
     msgInput.value = "" 
    }) 

    msgContainer.addEventListener("click", e => { 
     e.preventDefault() 
     let seconds = e.target.getAttribute("data-seek") || 
         e.target.parentNode.getAttribute("data-seek") 
     if (!seconds) { return } 

     Player.seekTo(seconds) 
    }) 

    ... 
} 

をしばらくPlayer.getCurrentTime()関数コールは期待どおりに機能します。

編集:私はまた、seekaheadパラメータで同じ結果を試しました。

答えて

1

YouTubeのdocumentationから、player.seekTo(seconds:Number, allowSeekAhead:Boolean)には2つのパラメータを設定する必要があります。

  • secondsパラメータは、プレーヤーが進むべき時間を示します。

そして

  • allowSeekAheadパラメータがsecondsパラメータは、現在バッファリングされたビデオデータの外で時間を指定した場合、プレイヤーがサーバーに新しい要求を行うかどうかを決定します。

だからあなたのコードは次のようになります。

msgContainer.addEventListener("click", e => { 
    e.preventDefault() 
    let seconds = e.target.getAttribute("data-seek") || 
    e.target.parentNode.getAttribute("data-seek") 
    if (!seconds) { return } 

    Player.seekTo(120, true)//120 seconds 
}) 

の詳細については、確認してください。このSOの質問:

+0

おそらく私は元の質問にこれを追加する必要がありましたが、私はそれを試しました。また、すべてのパラメータがなくてもJS関数を呼び出すことは '関数ではない'と一緒に投げられないことは確かです。実際に、例えば "hi" .replace( "hi")のようにしようとすると、undefinedだけが返されます。しかし、私はそれを反映するために私の質問を変更します。 – RusinaRange

関連する問題