2014-05-10 2 views
-2

window.onload 전에 간격을 시작하는 방법이 있습니까? 아니면 document.readystate loading과 같은 다른 이벤트가 시작될 수 있습니까?
페이지로드 전 setInterval 시작

내가 간격이 모든 것을하기 전에 시작합니다 .. 내가 몇 가지 실험을 시도하고있다 :

http://jsfiddle.net/nv7Rh/

http://jsfiddle.net/Wy3JN/


업데이트를이 배치 스크립트에서 타이머 간격을 시작합니다 이미지로드를 모니터링하는 본문에서 window.load은 다음을 중지합니다.

jsfiddle/nv7Rh/1/

이미지가 캐시에로드되지 않은 경우이 문제가 발생하므로 재검사를 위해 캐시를 지 웁니다.

지금 나는 인라인 스크립트 태그 또는 외부가 아닌 비동기에의 제공,

+0

당신은 몇 가지 요소가 아직도 순서에 대한 혼란 스러워요 방법 적 (간격의 가능한 계단식 이외의) 빨리 간격을 시작하지 않을 이유 –

+0

가없는 존재 가정하지 않는 경우 이벤트의 : http://jsfiddle.net/w4h5j/ 내가 그들의 순서를 변경하면 결과가 변경됩니다 ... –

답변

0

당신은 (문서가 구문 분석되었음을 나타내는 첫 번째로드 이벤트) DOMContentReady 전에 실행되는 코드에서 setInterval을 시작할 수 있습니다 확인입니다 스크립트. 비동기 스크립트는 나중의 onload 이벤트 (모든 리소스가 파싱 된 경우 실행 됨) 전에 실행될 수 있습니다.

비 차단 스크립트에 정의 된 함수를 참조하는 데 간격이 필요한 경우, 함수를 등록 할 수있는 핸들러 배열을 설정하고 간격을 찾아 실행할 때마다 실행합니다.

+0

나는 전문가가 아니에요, 내가 자바 스크립트에 새로운 .. 제발 몇 가지 예를 보여 줄 수 있습니까? –

0

간격 기능을 해당 기능 외부에서 실행하십시오. 요소가 아직로드되지 않았다고 생각되면 코드가 요소가 존재하는지 확인한 후 아무것도 수행하지 말아야합니다 (예 : 뿐만 아니라 수행

document.querySelector(".foo").doSomething(); 

하지만 : 당신은 아주 잘 모든 페이지 이벤트 전에 간격을 시작할 수 있습니다

var foo = document.querySelector(".foo"); foo && foo.doSomething(); 
0

합니다. 이벤트 처리기 안에 있지 않은 코드에서 시작하십시오.

그러나 인터벌 핸들러에서 페이지의 내용을 업데이트하려면 업데이트 할 페이지가있을 때까지 기다려야합니다. 예를 들어 getElementById을 사용하여 업데이트 할 요소를 찾으면 요소가 아직 존재하지 않음을 의미하는 null 참조가 반환되는지 확인해야합니다.

예 :

window.setInterval(function(){ 
    var clock = document.getElementById('clock'); 
    if (clock != null) { 
    clock.innerHTML = new Date().toString(); 
    } 
}, 100); 
관련 문제