programing

window.onload vs $(최소)입니다.ready()

randomtip 2023. 1. 25. 08:46
반응형

window.onload vs $(최소)입니다.ready()

JavaScript와 jQuery 메서드의 차이점은 무엇입니까?

ready하며 HTML 는 로드된 후에 발생합니다.onload나중에 모든 콘텐츠(예: 이미지)도 로드되었을 때 이벤트가 발생합니다.

onloadDOM의 입니다만, 「DOM」의 경우는,readyjQuery를 사용하다ready이 이벤트는 문서가 로드된 후 가능한 한 빨리 발생하므로 페이지의 요소에 기능을 추가하는 코드가 모든 콘텐츠가 로드될 때까지 기다릴 필요가 없습니다.

window.onload내장된 JavaScript 이벤트이지만 구현이 브라우저(Firefox, Internet Explorer 6, Internet Explorer 8, Opera) 간에 미묘한 기복이 있었기 때문에 jQuery는 다음과 같은 기능을 제공합니다.document.ready이것은, 이러한 파일을 추출해, 페이지의 DOM 가 준비되는 대로 기동합니다(이미지등을 기다리지 않습니다).

$(document).ready(그렇지 않은 에 주의해 주세요). document.ready(정의되지 않음)은 jQuery 함수이며 다음 이벤트에 대해 래핑 및 일관성을 제공합니다.

  • DOMContentLoaded- 문서의 DOM이 로드될 때(이미지 등이 로드될 때까지 다소 시간이 걸릴 수 있음) 발생하는 새로운 이벤트입니다. 다시 말해 Internet Explorer와 다른 지역에서는 약간 다릅니다.
  • ★★★★★★★★★★★★★★★★★」window.onload(이전 브라우저에서도 구현됨) 페이지 전체가 로드될 때 부팅됩니다(메시지, 스타일 등).

$(document).ready()j쿼리JQuery’s$(document).ready()메서드는 DOM이 준비되는 즉시 호출됩니다(브라우저가 HTML을 해석하고 DOM 트리를 구축했음을 의미합니다).이렇게 하면 문서를 조작할 준비가 되면 바로 코드를 실행할 수 있습니다.

예를 들어 브라우저가 DOMContentLoaded 이벤트를 지원하는 경우(IE 이외의 브라우저의 경우와 마찬가지로) 해당 이벤트를 실행합니다(DOMContentLoaded 이벤트는 IE9+의 IE에만 추가되었습니다).

여기에는 다음 두 가지 구문을 사용할 수 있습니다.

$( document ).ready(function() {
   console.log( "ready!" );
});

또는 줄임말 버전:

$(function() {
   console.log( "ready!" );
});

$(document).ready():

  • 이미지가 로드될 때까지 기다리지 않습니다.
  • DOM이 완전히 로드되었을 때 JavaScript 실행에 사용됩니다.이벤트 핸들러를 여기에 배치합니다.
  • 여러 번 사용할 수 있습니다.
  • $jQuery"$가 정의되지 않았습니다."
  • 이미지를 조작하려는 경우 사용되지 않습니다.$(window).load()★★★★★★ 。

window.onload()자바스크립트window.onload()이벤트는 DOM(Document Object Model), 배너 광고 및 이미지를 포함하여 페이지 상의 모든 콘텐츠가 로드되었을 때 실행됩니다. 다른 은 두 가지 이상의 수 두 가지 이상의 차이가 있을 수 있다는 것입니다.$(document).ready() 우리는 오직 의 기능, 하나의 기능만을 수 .onload★★★★★★ 。

힌트:

항상 사용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가 개체의 속성일 뿐이며 덮어쓰기되기 때문입니다.

의의 with with with with와 addEventListener , 을 사용하는 .$(document).ready()부하가 걸리지 않습니다.

Windows 로드 이벤트는 DOM(Document Object Model) 콘텐츠와 비동기 JavaScript, 프레임이미지를 포함하여 페이지 상의 모든 콘텐츠가 완전히 로드될 때 실행됩니다.body onload=도 사용할 수 있습니다.둘 다 같다.window.onload = function(){} ★★★★★★★★★★★★★★★★★」<body onload="func();">같은 이벤트를 사용하는 다른 방법입니다.

jQuery 함수이벤트는 다음보다 조금 일찍 실행됩니다.window.onload페이지에 DOM(Document Object Model)이 로드되면 호출됩니다.이미지, 프레임이 완전히 로드될 까지 기다리지 않습니다.

다음 기사에서 인용한 내용:

$(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()jQuery 이벤트는 HTML 문서가 완전히 로드되었을 때 발생합니다.window.onload나중에 로드된 페이지의 이미지를 포함한 모든 것이 발생할 때 이벤트가 발생합니다.

windowDOM 이며, "window.onload" DOM은 javascript ", "입니다.$(document).ready()event jQuery의 입니다.

$(document).ready()보통 jQuery의 래퍼로 로딩된 모든 요소가 jQuery에서 사용되는지 확인합니다.

jQuery 소스 코드를 참조하여 작동 방식을 파악합니다.

jQuery.ready.promise = function( obj ) {
    if ( !readyList ) {

        readyList = jQuery.Deferred();

        // Catch cases where $(document).ready() is called after the browser event has already occurred.
        // we once tried to use readyState "interactive" here, but it caused issues like the one
        // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
        if ( document.readyState === "complete" ) {
            // Handle it asynchronously to allow scripts the opportunity to delay ready
            setTimeout( jQuery.ready );

        // Standards-based browsers support DOMContentLoaded
        } else if ( document.addEventListener ) {
            // Use the handy event callback
            document.addEventListener( "DOMContentLoaded", completed, false );

            // A fallback to window.onload, that will always work
            window.addEventListener( "load", completed, false );

        // If IE event model is used
        } else {
            // Ensure firing before onload, maybe late but safe also for iframes
            document.attachEvent( "onreadystatechange", completed );

            // A fallback to window.onload, that will always work
            window.attachEvent( "onload", completed );

            // If IE and not a frame
            // continually check to see if the document is ready
            var top = false;

            try {
                top = window.frameElement == null && document.documentElement;
            } catch(e) {}

            if ( top && top.doScroll ) {
                (function doScrollCheck() {
                    if ( !jQuery.isReady ) {

                        try {
                            // Use the trick by Diego Perini
                            // http://javascript.nwbox.com/IEContentLoaded/
                            top.doScroll("left");
                        } catch(e) {
                            return setTimeout( doScrollCheck, 50 );
                        }

                        // detach all dom ready events
                        detach();

                        // and execute any waiting functions
                        jQuery.ready();
                    }
                })();
            }
        }
    }
    return readyList.promise( obj );
};
jQuery.fn.ready = function( fn ) {
    // Add the callback
    jQuery.ready.promise().done( fn );

    return this;
};

또, 이하의 이미지를 작성해, 양쪽 모두를 간단하게 참조할 수 있습니다.

여기에 이미지 설명 입력

$(document).ready()사용할 수 있습니다.전체 문서가 로드되기 전에 HTTP 요청이 중단되는 경우(예: 페이지가 브라우저로 스트리밍되는 동안 다른 링크가 클릭됨) IE는 다음을 트리거합니다.$(document).ready

「 」에 .$(document).ready()이벤트는 DOM 개체를 참조하고 있으며 이러한 개체를 찾을 수 없으며 Javascript 오류가 발생할 수 있습니다.이러한 오브젝트에 대한 참조를 보호하거나 이러한 오브젝트를 참조하는 코드를 window.load 이벤트로 연기합니다.

다른 브라우저(특히 Chrome 및 Firefox)에서는 이 문제를 재현할 수 없습니다.

이벤트

$(document).on('ready', handler)는 jQuery의 ready 이벤트에 바인드됩니다.핸들러는, DOM 로드되면 호출됩니다.이미지와 같은 자산은 아직 존재하지 않을 수 있습니다.바인딩 시 문서가 준비되면 호출되지 않습니다. jQuery는 이를 위해 DOMContentLoaded-Event를 사용하고 사용할 수 없는 경우 에뮬레이트합니다.

$(document).on('load', handler)는 서버에서 모든 리소스가 로드되면 실행되는 이벤트입니다.이제 이미지가 로드됩니다.onload는 원시 HTML 이벤트이지만 ready는 jQuery에 의해 구축됩니다.

기능들

$(document).ready(handler)사실 그건 약속이야호출 시 문서가 준비되면 핸들러가 즉시 호출됩니다.그렇지 않으면 에 바인드됩니다.ready - 이벤트

jQuery 1.8 이전에는$(document).load(handler)$(document).on('load',handler).

상세 정보

window.onload: 일반 JavaScript 이벤트입니다.

document.ready: HTML 전체가 로드되었을 때의 특정 jQuery 이벤트.

가지할 점은 (회상이라고 요?)는 쌓을 수 입니다.onload 수 대로 하다ready은 여러 개의 ,, jQuery Magic은 여러 개의 ,, jQuery Magic은 여러 개의 ,, jQuery Magic은 여러 개의 ,, jQuery Magic을 ready 같은, 이렇게 요, 안 된다, 안 돼요, 안 돼요, 안 돼요.onload.

★★★★onload는 이전의 것을 .onloads.

이에 대처하는 좋은 방법은 Simon Willison이 작성한 것으로 보이는 함수를 사용하는 것입니다.또한 "Using Multiple JavaScript Onload Functions"에 설명되어 있습니다.

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

// Example use:
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
  /* More code to run on page load */
});

Document.ready event는 모든 코드로 할 수 되는 것은 . (jQuery " ) j 、 (scriptscriptscriptscriptscriptscriptscriptscriptscriptscriptscript 、 JavaScript 。 Document.readyHTML 서 html html html 。

$(document).ready(function() {

    // Code to be executed
    alert("Document is ready");
});

window.load그러나 페이지가 완전히 로드될 때까지 기다립니다.여기에는 내부 프레임, 이미지 등이 포함됩니다.

$(window).load(function() {

    //Fires when the page is loaded completely
    alert("window is loaded");
});

document되고 document.ready HTML이 되었을 때 합니다.window.onload이벤트는 항상 모든 콘텐츠(예: 콘텐츠)가 로드되었을 때 나중에 발생합니다.

.document.ready이미지가 로드될 때까지 기다리지 않고 렌더링 프로세스에 "조기" 개입하려는 경우 이벤트를 수행합니다. 전에 , "이미지"가 될 까지 기다려야 합니다.window.onload.

를 들어, 「패턴을하고 있는 , 사이즈에 가 있는 는, 「슬라이드 쇼(Slide Show)」가 될 때까지 .window.onload그렇지 않으면 이미지가 로드되는 속도에 따라 랜덤한 문제가 발생할 수 있습니다.스크립트는 이미지를 로드하는 스레드와 동시에 실행됩니다.스크립트가 충분히 길거나 서버가 충분히 빠르면 이미지가 제시간에 도착해도 문제가 발생하지 않을 수 있습니다.그러나 가장 안전한 방법은 이미지를 로드하는 것입니다.

document.ready사용할 수 없다'는 뜻으로, '사용자에게 , '사용할 수 없다'는 뜻에서 '사용할 수 있다'는 뜻이죠.window.onload리소스 로딩이 필요한 스크립팅을 완료하고 마지막으로 "로드 중..." " " " " sign.

예:-

// document ready events
$(document).ready(function(){
     alert("document is ready..");
})

// using JQuery
$(function(){
   alert("document is ready..");
})

// window on load event
function myFunction(){
  alert("window is loaded..");
}
window.onload = myFunction;

시간은 금방 지나가고, 현재는 ECMAScript 2021 이며, IE11은 점점 더 적은 사람들이 사용하고 있습니다.대조되는 최대 2개의 이벤트는 및 입니다.

DOMContentLoaded 는, 최초의 HTML 문서를 완전하게 로드해 해석한 후에 기동합니다.

load 뒤를 쫓다DOMContentLoaded페이지 전체가 로드되어 모든 종속 리소스가 로드가 완료될 때까지 기다립니다.리소스 예: 스크립트, 스타일시트, 이미지 및 iframe 등

중요: 동기 스크립트는 DOM 의 해석을 일시 정지합니다.

두 이벤트 모두 DOM을 사용할 수 있는지 여부를 판단하기 위해 사용할 수 있습니다.예:

<script>
    // DOM hasn't been completely parsed
    document.body; // null

    window.addEventListener('DOMContentLoaded', () => {
        // Now safely manipulate DOM
        document.querySelector('#id');
        document.body.appendChild();
    });

    /**
     * Should be used only to detect a fully-loaded page.
     * 
     * If you just want to manipulate DOM safely, `DOMContentLoaded` is better.
     */
    window.addEventListener('load', () => {
        // Safely manipulate DOM too
        document.links;
    });
</script>

window.onload자바스크립트 window.onloadHTML html html html html html html html html html 。 window.onload한 번만 쓸 수 있습니다.

document.readyjQuery는 jQuery 。 document.readyHTML 및 HTML 파일에 포함된 모든 JavaScript 코드, CSS 및 이미지가 완전히 로드되었을 때 트리거됩니다. document.ready을 사용하다

라고 말할 때$(document).ready(f)스크립트 엔진에 다음 처리를 지시합니다.

  1. 오브젝트 문서를 가져와 푸시합니다.이 문서는 로컬 범위에 없으므로 해시 테이블 조회를 수행하여 문서가 어디에 있는지 찾아야 합니다.다행히 문서는 글로벌하게 바인드되어 있기 때문에 단일 조회입니다.
  2. $로컬 범위 내에 없기 때문에 충돌이 있을 수도 있고 없을 수도 있는 해시 테이블 조회를 수행해야 합니다.
  3. 글로벌 범위에서 객체 f를 찾거나(다른 해시 테이블 검색) 함수 객체를 푸시하여 초기화합니다.
  4. ready메서드를 찾아 호출하기 위해 선택한 개체에 대한 다른 해시 테이블 조회가 포함됩니다.
  5. 다 했어요.

경우, 는 jQuery에 입니다. 서 "JQuery "2"는 "jQuery", "jQuery"는 "JQuery"를 의미합니다.$jQuery에 대한 가능한 모든 입력의 키친 싱크이므로 쿼리를 올바른 핸들러로 디스패치하기 위한 다른 맵이 있을 수 있습니다.

또는 다음과 같이 할 수 있습니다.

window.onload = function() {...}

어느 쪽인가 하면

  1. 글로벌 스코프에서 오브젝트 창을 찾으면 자바스크립트가 최적화되어 있으면 창이 변경되지 않았기 때문에 이미 선택된 오브젝트가 있기 때문에 아무것도 할 필요가 없다는 것을 알 수 있습니다.
  2. function 객체가 오퍼랜드스택에 푸시됩니다.
  3. onload는 해시 테이블룩업을 실행함으로써 속성인지 아닌지를 나타냅니다.이것은 함수이기 때문에, 함수라고 불립니다.

좋은 경우, 비용이 는 "해시 테이블룩업 "해시 테이블룩업", "해시 테이블룩업"이 하기 때문입니다.이것은 다음 이유로 필요합니다.onload가져와야 합니다.

이상적으로는 jQuery는 jQuery의 런타임 디스패치 없이 jQuery가 원하는 작업을 수행하기 위해 쿼리를 붙여넣을 수 있는 문자열로 컴파일합니다.이렇게 하면 다음 중 하나를 선택할 수 있습니다.

  1. 오늘처럼 jquery의 동적 디스패치를 수행합니다.
  2. jQuery가 원하는 작업을 수행하기 위해 eval로 전달될 수 있는 순수 JavaScript 문자열로 쿼리를 컴파일하도록 합니다.
  3. 의 비용을 .eval.

window.onload는 DOM api에 의해 제공되며 "load event burnes when 특정 리소스가 로드되었을 때 실행됩니다"라고 되어 있습니다.

「로드 이벤트는, 문서 로드 프로세스의 마지막에 기동합니다.이 시점에서 문서 내의 모든 객체는 DOM에 있으며 이미지, 스크립트, 링크 및 서브프레임의 로드는 모두 완료되었습니다." DOM 로드

단, jQuery $(문서)입니다.ready()는 Document Object Model(DOM) 페이지가 JavaScript 코드를 실행할 준비가 되었을 때만 실행됩니다.여기에는 이미지, 스크립트, iframe 등은 포함되지 않습니다.jquery ready 이벤트

따라서 jquery ready 메서드는 dom onload 이벤트보다 먼저 실행됩니다.

언급URL : https://stackoverflow.com/questions/3698200/window-onload-vs-document-ready

반응형