$ (document) .ready 필요합니까?


111

나는 stackoverflow 에서이 질문을 보았지만 전혀 대답되지 않았다고 생각합니다.

$(document).ready필요?

페이지 하단에있는 모든 자바 스크립트를 연결하므로 이론적으로 문서가 준비된 후에 모두 실행됩니다.


3
오래된 브라우저는 최신 브라우저에서 사용하는 병렬 다운로드를 즐기지 못할 수 있습니다. 이것이 스크립트가 맨 아래에 배치되는 주된 이유입니다. 특히 이전 브라우저에서 HTML 및 CSS를 먼저 렌더링 할 수 있습니다. 이 시점에서 DOM이로드되었음을 감지하는 방법을 선택할 수 있습니다. js를 시작하는 두 가지 인기있는 방법은 window.onload 및 $ (document) .ready (jQuery와 함께)입니다. window.onload에는 다른 옵션과 쉽게 검색 할 수있는 명백한 단점이 있습니다. 요점은 $ (document) .ready는 그렇지 않은 것보다 더 자주 작동하며 사용하기 쉽습니다.
BradChesney79 2014 년

답변:


125

$(document).ready필요?

아니

</body>닫는 태그 바로 앞에 모든 스크립트를 배치 했다면 똑같은 작업을 수행 한 것입니다.

또한 스크립트가 DOM에 액세스 할 필요가없는 경우 다른 스크립트에 대한 가능한 종속성 이상으로로드되는 위치는 중요하지 않습니다.

많은 CMS의 경우 스크립트가로드되는 위치를 선택할 수 없으므로 모듈 식 코드에서 document.ready이벤트 를 사용하는 것이 좋습니다 . 다른 곳에서 재사용하는 경우 이전 코드로 돌아가서 디버그 하시겠습니까?

주제를 벗어:

보조 노트로 : 당신이 사용해야하는 jQuery(function($){...});대신 $(document).ready(function(){...});그에게 별칭을 강제로 $.


"정확히 똑같은 것"이라고 확신합니까? 나는 당신의 CSS (또는 메인 HTML과 병렬로로드 된 다른 코드)가 아직 완전히 파싱되지 않을 수 있다는 인상을 받았습니다.
Zach Lysobey 2013

6
@ZachL, CSS가 완전히 파싱되기 전에 문서가 준비 될 수 있습니다. document.ready 동일하지 않습니다 는 AS onload이미지 및 다른 외부 자산 완성 로딩이 이벤트.
zzzzBov

설명해 주셔서 감사합니다.
Zach Lysobey

5
이 "NO"방금 확인 유와 </ BODY> 실수를 해달라고 할 .. 나에게 일 3 시간 비용이없는 <BODY> :
teejay

1
나는 별칭을 강제하는 데 반드시 동의하지는 않습니다. 특히 noConflict()어떤 이유로 사용해야하는 경우에는 더욱 그렇습니다 .
Jay Blanchard 2014 년

22

아니요, 닫기 전에 자바 스크립트가 마지막 인 경우 해당 태그를 추가 할 필요가 없습니다.

참고로 $ (document) .ready의 약자는 아래 코드입니다.

$(function() {
// do something on document ready
});

이 질문이 좋을 것 같습니다. 읽었 어? jQuery : 페이지 하단에 외부 JS 인 경우 document.ready를 사용하는 이유는 무엇입니까?


6
질문은 본질적으로 "내 스크립트를 본문의 맨 아래에 놓을 때 문서를 준비해야합니까?"이며 "작성하는 지름길이 있습니까? $(document).ready()"입니다.
nnnnnn

4

아니요, 연기 된 일이 발생하지 않는다는 것을 안다면 필요하지 않습니다. 대부분의 경우 작업중인 작업을 위에서 아래로 개발했는지 알 수 있습니다.

-철저히 감사하지 않고 다른 사람의 코드를 가져 오면 알 수 없습니다.

따라서 구조를 도와주는 프레임 워크 또는 편집기를 사용하고 있는지 자문 해보십시오. 다른 사람의 코드를 가져오고 있으며 각 파일을 읽지 않아도됩니까? 코드를 테스트하는 운영 체제, 브라우저 및 브라우저 버전 매트릭스를 살펴볼 준비가 되었습니까? 당신이 할 필요가 사용자 코드에서 속도의 매 온스를 짜내는?

document.ready ()는 이러한 질문의 많은 부분을 무의미하게 만듭니다. document.ready ()는 당신의 삶을 더 쉽게 만들어주기 위해 디자인되었습니다. 그것은 작은 (그리고 감히 받아 들일 수있는) 성능 저하를 가져옵니다.


내가 본 것-편집 중 하나가 거부되었지만 괜찮아 보입니다. 당신은 다시 제출 할 수 있습니다 하나 : stackoverflow.com/review/suggested-edits/3224385
콴타스 94 헤비

1

jquery의 사용과 관련하여 인터넷을 통해 참조 / 블로그 게시물을 보았습니다 document.ready. 제 생각에는 그것을 사용하거나 페이지 하단에 모든 자바 스크립트를 두는 것이 모두 유효합니다. 이제 질문은 어느 것이 더 좋을까요? 그것은 단지 프로그래밍 스타일의 문제입니다.


0

아니요, 필요하지 않습니다. 본문 닫는 태그 바로 앞에 스크립트 태그를 넣거나 IE9 +를 지원하는 경우 네이티브 JS를 사용할 수 있습니다.

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.