2011-12-30 1 views
19

그래서, 나는 그것이 0보다가 어떤지를 확인비디오가로드 또는 자바 스크립트

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

에 리스너를 사용하고 있지 말해 여부를 때로드 여부를 비디오의. 이 기능은 매우 작은 동영상과 Google 크롬에서만 작동합니다. 그것은 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

으로 대체하십시오. 해당 브라우저를 지원하는 브라우저는 무엇입니까? –

+0

@JaredFarrish이 [Wiki] (http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5_Media%29)에 따르면 지원이 완료되었습니다 (WebKit 열은 비어 있지만 구현이 지연되면 놀랄 것입니다. 모질라/오페라). –

+1

> 1을 찾으면 막 추구 할 수 있습니다. – Costa

2

은 정상적인 상황에서, 리스너로이하려면, 당신은 중지 이벤트를 수신 할 수 있습니다. 다운로드가 일시 중지되었거나 어떤 이유로 중지되었거나 종료 된 경우 트리거됩니다. 내가하여 setInterval을 사용하여 찾기와 적극적으로 청취 작동 https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events

0

: 콘텐츠가 이미 (캐시에서와 같은)을로드 할 때

또한

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

소스 사례 위해 연주를 듣고 싶은 것 을 때에로드 할 때까지 매 30 초를 확인하여 비디오 변화의 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 ES6 만 () =>을 (를) function()