2011-12-30 23 views
19

所以,我一直在使用上視頻告訴是否加載與否在Javascript

document.getElementById("video").buffered.length 

一個監聽器,看它是否大於0何時加載或沒有視頻的。這適用於非常小的視頻,僅適用於Google Chrome。它根本不適用於Firefox。任何想法如何讓這個工作?

我基本上要等到3個獨立的視頻被加載到採取具體行動,我怎麼去呢?

回答

32

試試這個:

var video = document.getElementById("video-id-name"); 

if (video.readyState === 4) { 
    // it's loaded 
} 

這裏閱讀:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState

+0

哪些瀏覽器支持該屬性? – 2011-12-30 23:51:44

+0

@JaredFarrish根據這一[百科](http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5_Media%29),支持完成(WebKit的欄是空的,但我會感到驚訝,如果其實施的背後Mozilla的/ Opera的)。 – 2011-12-31 00:28:26

+1

>比,如果它只是尋求1可能做的伎倆。 – Costa 2016-07-02 22:28:43

2

爲了使這成爲一個傾聽者,在正常情況下,你要聽掛起事件。當下載由於任何原因暫停或停止時(包括完成),它會被觸發。

您也想聽聽打的情況下,當內容已經被加載(如,從高速緩存)

video.addEventListener("playing", function() { 
    console.log("[Playing] loading of video"); 
    if (video.readyState == 4) { 
     console.log("[Finished] loading of video"); 
    } 
}); 
video.addEventListener("suspend", function(e) { 
    console.log("[Suspended] loading of video"); 
    if (video.readyState == 4) { 
     console.log("[Finished] loading of video"); 
    } 
}); 

來源:https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events

0

我發現使用的setInterval工程積極聽取到時readyState的,直到它加載在檢查每半秒的視頻變化。

checkforVideo(); 

function checkforVideo() { 
    var b = setInterval(()=>{ 
     if(VideoElement.readyState >= 3){ 

      \\do whatever you want done here 

      \\you can now clearInterval (stop checking every half second) 
      clearInterval(b); 
     }     
    },500); 
} 

如果你不USI NG ES6只需更換() =>function()

相關問題