JavaScript window.onload
와 jQuery $(document).ready()
방법 의 차이점은 무엇입니까 ?
답변
ready
HTML 문서가로드 된 후 동안 이벤트가 발생 onload
모든 컨텐츠 (예 : 이미지)도로드 된 경우 이벤트가 나중에 발생합니다.
onload
그동안 이벤트는 DOM의 표준 이벤트 ready
이벤트가 jQuery를 특정입니다. 이 ready
이벤트 의 목적은 문서가로드 된 후 가능한 빨리 발생하므로 페이지의 요소에 기능을 추가하는 코드가 모든 내용이로드 될 때까지 기다릴 필요가 없다는 것입니다.
답변
window.onload
는 기본 제공 자바 스크립트 이벤트이지만, 구현시 브라우저 (Firefox, Internet Explorer 6, Internet Explorer 8 및 Opera )에서 미묘한 차이 가 있으므로 jQuery는 이를 추상화하고 페이지의 DOM이 준비 되 자마자 실행됩니다. (이미지 등을 기다리지 않습니다).document.ready
$(document).ready
(그것의주의 하지 document.ready
정의되어 있지 않습니다) JQuery와 기능, 포장 및 제공 의 일관성을 다음 이벤트에 :
document.ondomcontentready
/document.ondomcontentloaded
-문서의 DOM이로드 될 때 발생하는 새로운 이벤트 ( 이미지 등이로드 되기 까지 다소 시간이 걸릴 수 있음 ); 다시 말하지만 Internet Explorer와 다른 국가에서는 약간 다릅니다.- 및
window.onload
(심지어 오래된 브라우저에서 구현되는)하는 화재 때 전체 페이지가로드 (이미지, 스타일 등)
답변
$(document).ready()
jQuery 이벤트입니다. $(document).ready()
DOM이 준비 되 자마자 JQuery의 메소드가 호출됩니다 (즉, 브라우저가 HTML을 구문 분석하고 DOM 트리를 빌드했음을 의미 함). 이를 통해 문서를 조작 할 준비가되는 즉시 코드를 실행할 수 있습니다.
예를 들어, 브라우저가 DOM이 아닌 많은 브라우저에서와 같이 DOMContentLoaded 이벤트를 지원하면 해당 이벤트에서 시작됩니다. DOMContentLoaded 이벤트는 IE9 +의 IE에만 추가되었습니다.
이를 위해 두 가지 구문을 사용할 수 있습니다.
$( document ).ready(function() {
console.log( "ready!" );
});
또는 속기 버전 :
$(function() {
console.log( "ready!" );
});
주요 포인트 $(document).ready()
:
- 이미지가로드 될 때까지 기다리지 않습니다.
- DOM이 완전히로드 될 때 JavaScript를 실행하는 데 사용됩니다. 이벤트 핸들러를 여기에 넣으십시오.
- 여러 번 사용할 수 있습니다.
- 교체
$
로jQuery
당신이받을 때 “$가 정의되지 않았습니다.” - 이미지를 조작하려는 경우 사용되지 않습니다.
$(window).load()
대신 사용하십시오 .
window.onload()
기본 JavaScript 함수입니다. 이 window.onload()
이벤트는 DOM (문서 개체 모델), 배너 광고 및 이미지를 포함하여 페이지의 모든 콘텐츠가로드되면 시작됩니다. 이 둘의 또 다른 차이점 $(document).ready()
은 하나 이상의 onload
기능을 가질 수 있지만 하나의 기능 만 가질 수 있다는 것 입니다.
답변
Windows로드 페이지의 모든 내용이 완전히 DOM (문서 객체 모델) 내용을 포함한로드 이벤트가 발생 비동기 자바 스크립트 , 프레임과 이미지 . body onload =를 사용할 수도 있습니다. 둘 다 동일합니다. window.onload = function(){}
와 <body onload="func();">
같은 이벤트를 사용하여 여러 가지 방법이 있습니다.
jQuery$document.ready
함수 이벤트는 조금 더 일찍 실행 window.onload
되며 DOM (Document Object Model)이 페이지에로드되면 호출됩니다. 이미지, 프레임이 완전히로드 될 때까지 기다리지 않습니다 .
다음 문서에서 발췌 :
어떻게 $document.ready()
다른window.onload()
답변
$(document).ready(function() {
// Executes when the HTML document is loaded and the DOM is ready
alert("Document is ready");
});
// .load() method deprecated from jQuery 1.8 onward
$(window).on("load", function() {
// Executes when complete page is fully loaded, including
// all frames, objects and images
alert("Window is loaded");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
답변
$(document).ready()
Internet Explorer와 함께 사용할 때주의해야 할 사항입니다 . 전체 문서가로드 되기 전에 HTTP 요청이 중단되면 (예 : 페이지가 브라우저로 스트리밍되는 동안 다른 링크가 클릭 됨) IE가 $(document).ready
이벤트 를 트리거합니다 .
$(document).ready()
이벤트 내의 코드가 DOM 객체를 참조하는 경우 해당 객체를 찾지 못할 가능성이 있으며 Javascript 오류가 발생할 수 있습니다. 해당 객체에 대한 참조를 보호하거나 해당 객체를 참조하는 코드를 window.load 이벤트로 연기하십시오.
다른 브라우저 (특히 Chrome 및 Firefox)에서이 문제를 재현 할 수 없었습니다.
답변
작은 팁 :
항상window.addEventListener
창을 사용하여 이벤트를 추가하십시오. 그렇게하면 다른 이벤트 핸들러에서 코드를 실행할 수 있습니다.
올바른 코드 :
window.addEventListener('load', function () {
alert('Hello!')
})
window.addEventListener('load', function () {
alert('Bye!')
})
유효하지 않은 코드:
window.onload = function () {
alert('Hello!') // it will not work!!!
}
window.onload = function () {
alert('Bye!')
}
이것은 onload가 단지 객체의 속성이기 때문에 덮어 쓰기 때문입니다.
와 유추하여 onload보다는 addEventListener
사용하는 $(document).ready()
것이 좋습니다.
