2013-07-10 22 views
0

我無法計算如何將監聽器添加到視頻播放。 我希望它在達到特定播放時間(即10秒)時最終停止播放。如何添加監聽器到視頻播放

我已經試過:

while(video.currentTime != timeToStop){ 
      video.play(); 
     } 

但它會導致瀏覽器掛起,可能是因爲我開始video.play()所有的時間。

do while 

導致相同的問題。

那我該用什麼?

+2

你想做什麼?你的代碼沒有顯示添加監聽器。你想讓聽衆什麼時候運行?視頻開始時?什麼時候結束?有些事件可以偵聽,比如'video.addEventListener(「ended」,someFunction);'。如果你想聽每一個勾號,你可以使用'timeupdate'事件 – Ian

+2

這裏有一個你可能想要的東西的例子:http://jsfiddle.net/XK4NW/ – Ian

+0

很好,這正是我所需要的。謝謝你,你想把它作爲答案發布還是應該刪除這個問題? –

回答

2

要跟蹤視頻的進度,可以使用timeupdate事件並檢查視頻的currentTime屬性是否已通過最大值。這裏有一個例子:

window.addEventListener("load", function() { 
    var video = document.getElementById("video1"), 
     timeToStop = 2; 

    video.addEventListener("timeupdate", function() { 
     if (this.currentTime >= timeToStop) { 
      this.pause(); 
     } 
    }, false); 
}, false); 

DEMO:http://jsfiddle.net/eGw52/

(其中例如使用2秒,不是10)

1

視頻與承諾很好地發揮。這是一個例程,在特定的時間點暫停並返回一個承諾,當這種承諾發生時(或視頻由於其他原因暫停或結束)。

function pause_at (video, t) { 
    var promise=new Promise(); 

    function reached() { 
     promise.fulfill (video.currentTime); 
     video.removeEventListener ("timeupdate", timeupdate); 
     video.removeEventListener ("pause", reached); 
    } 

    function timeupdate() { 
     if (video.currentTime >= t) { 
      reached(); 
      video.pause(); 
     } 
    } 

    video.addEventListener ("timeupdate", timeupdate); 
    video.addEventListener ("pause", reached); 
    return promise; 
} 

用法:

pause_at (video,60).then (function() {alert ("At 60-second mark!");}); 
video.play(); 

注意,視頻的結局也被認爲是視頻「暫停」(與發射暫停事件),這樣的承諾也將實現在視頻結束。

調整你想使用你最喜歡的承諾庫。如果您想反向運行視頻(負播放率),則需要修復此問題。 :-)

相關問題