2017-04-27 15 views
0

페이지를로드 한 후 몇 초 만에 실행하고 싶은 코드가 있습니다. 이를 위해 ...Window setTimeout을 jQuery DOM 준비에 의존하게 만들면 어떤 차이가 있습니까?

jQuery(document).ready(function ($) { 

    setTimeout(function() { 
    alert("Now I am free"); 
    }, 3000); 
}); 

이 두 가지 접근 방식의 차이는 무엇을 나는 ..

setTimeout(function() { 
      alert("Now I am free"); 
    }, 3000); 

을이 작업을 수행 할 수 있습니다 또는 나는 준비 문서에 발사 할 수 있을까? 어떤게 더 좋아?

+0

'.ready()'는 DOM 준비가 될 때까지'seTimeout' 코드가 설정되지 않기 때문에 조금 더 지연됩니다. https://learn.jquery.com/using-jquery-core/document-ready/ – sissonb

답변

0

첫 번째 방법 (지연 설정) 에는 타이밍 구멍이 있습니다. : 페이지로드가 완료되기 전에 타이머가 꺼질 수 있습니다.

이 경우는 거의 불가능하다고 생각할 수 있으며 시스템에서 발생할 가능성이 낮을 수 있습니다. 그러나 장치가 주변 메모리 용량을 가지고있는 방문자는 웹 브라우저의 15 개의 열린 탭이 백그라운드 AJAX 호출을 시도하는 것과 동시에 OS가 자체적으로 업데이트하려고하기 때문에 지속적인 메모리 오류가 발생하고 있으며 브라우저에 " 응답 없음 "으로 표시됩니다. 브라우저가 다시 응답을 시작하려면 30 초가 더 걸립니다. 이것은 가상의 시나리오가 아니며입니다.

타이머를 시작하는 문서 준비 메커니즘을 사용하면 타이머가 꺼지면 콜백 코드로 DOM을 조작 할 수 있습니다. 일반 "이벤트"창에 이벤트 수신기를 추가하여 일반 바닐라 자바 ​​스크립트에서 동일한 작업을 수행 할 수도 있습니다.

< 본문 끝의 스크립트 블록에서 타이머를 시작하면 > 섹션에서도 타이머가 너무 일찍 종료 될 위험이 없습니다.