2011-12-30 15 views
19
yılında

Yani, bundan 0 büyükse için olup olmadığını görmek içinvideo yüklenirken veya JavaScript

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

üzerinde bir dinleyici kullanıyorum değil söyle olsun zaman yüklü ya da olmasın bir video. Bu, çok küçük bir video için ve yalnızca Google Chrome'da çalışır. Firefox'ta hiç çalışmıyor. Bunu nasıl çalıştıracağınıza dair herhangi bir fikir var mı?

Ben aslında bu konuda nasıl gidiyorsun, 3 ayrı videolar, belirli eylemde yüklenir kadar beklemek istiyorum

?

cevap

32

bu deneyin:

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

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

burada oku: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState

+0

function() ile () => yerine? –

+0

@JaredFarrish bu [Wiki] (http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5_Media%29) göre, destek tamamlandı (WebKit kolon boştur, ancak bunların uygulanması arkasında ise sürpriz olacak Mozilla'nın/Opera adlı). –

+1

> 1'den fazlası, arama yapmaktan ibaretse, hile yapabilir. – Costa

2

normal şartlar altında, bir dinleyici içine bu hale getirmek için, askıya olay dinlemek isteyeceksiniz. İndirme işlemi durdurulduğunda veya bitmesi de dahil olmak üzere herhangi bir nedenle durdurulduğunda tetiklenir. Ben setInterval kullanarak bulmak aktif dinleme için çalışır https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events

0

: içerik zaten (önbellekten gibi) yüklendiğinde

Ayrıca

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"); 
    } 
}); 

Kaynak durumlar için oynayan dinlemek isteyeceksiniz için zaman içinde yükler kadar her yarım saniyede kontrol ederek görüntü değişikliklerinin 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); 
} 

Eğer değilseniz uSI ng ES6 sadece mülkiyet olduğunu destekleyen hangi tarayıcıları