복붙노트

[JQUERY] .ready $ (문서) VS 위해 window.onload ()

JQUERY

.ready $ (문서) VS 위해 window.onload ()

해결법


  1. 1.HTML 문서가로드 된 후 모든 컨텐츠 (예 : 이미지)도로드 된 경우 onload 이벤트가 나중에 발생하면서 준비 이벤트가 발생합니다.

    HTML 문서가로드 된 후 모든 컨텐츠 (예 : 이미지)도로드 된 경우 onload 이벤트가 나중에 발생하면서 준비 이벤트가 발생합니다.

    준비 이벤트가 jQuery를 특정가있는 동안 onload 이벤트는 DOM의 표준 이벤트입니다. ready 이벤트의 목적은 페이지의 요소에 기능을 추가하는 코드는 부하에 모든 콘텐츠를 기다릴 필요가 없습니다 그래서, 가능한 한 빨리 문서가로드 된 후 발생해야한다는 것입니다.


  2. 2.창로드는 자바 스크립트 이벤트 내장, 그러나 그것의 구현은 브라우저 (파이어 폭스, 인터넷 익스플로러 6, 인터넷 익스플로러 8, 오페라)를 통해 미묘한 단점이 있었다으로, jQuery를 곧 멀리 사람들을 추상화하는 document.ready 제공하고, 화재됩니다 페이지의 DOM이 준비되면 (이미지 등을 기다리지 않는다).

    창로드는 자바 스크립트 이벤트 내장, 그러나 그것의 구현은 브라우저 (파이어 폭스, 인터넷 익스플로러 6, 인터넷 익스플로러 8, 오페라)를 통해 미묘한 단점이 있었다으로, jQuery를 곧 멀리 사람들을 추상화하는 document.ready 제공하고, 화재됩니다 페이지의 DOM이 준비되면 (이미지 등을 기다리지 않는다).

    $ (문서) .ready (가 정의되지 않은, document.ready 아니라고 주) JQuery와 기능, 포장 및 다음 이벤트에 일관성을 제공하는 것입니다 :


  3. 3.$ (문서) .ready ()는 jQuery를 이벤트입니다. jQuery의 $ (문서) .ready () 메소드는 DOM이 (브라우저가 HTML을 구문 분석하고 DOM 트리를 구축했다고하는 수단) 준비 자마자 호출됩니다. 이 문서가 조작 할 준비가되어하자마자 코드를 실행할 수 있습니다.

    $ (문서) .ready ()는 jQuery를 이벤트입니다. jQuery의 $ (문서) .ready () 메소드는 DOM이 (브라우저가 HTML을 구문 분석하고 DOM 트리를 구축했다고하는 수단) 준비 자마자 호출됩니다. 이 문서가 조작 할 준비가되어하자마자 코드를 실행할 수 있습니다.

    (많은 비 IE 브라우저가대로) 브라우저가 DOMContentLoaded 이벤트를 지원하는 경우 예를 들어, 다음은 해당 이벤트에 발생합니다. 합니다 (DOMContentLoaded 이벤트는 IE9 +에서 IE에 추가합니다.)

    두 구문이 사용할 수 있습니다 :

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

    또는 속기 버전 :

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

    .ready $ (문서)에 대한 주요 포인트 () :

    창로드는 () 네이티브 자바 스크립트 기능입니다. 위해 window.onload () 이벤트가 발생하여 페이지의 모든 내용은 DOM (문서 객체 모델), 배너 광고 및 이미지를 포함하여,로드 할 때. 우리가 .ready 이상의 $ (문서) () 함수를 가질 수 있지만 둘 사이의 또 다른 차이점은, 그것을, 우리는 하나 개의 온로드 기능을 가질 수 있습니다.


  4. 4.페이지의 모든 내용이 완전히 DOM (문서 객체 모델) 내용과 비동기 자바 스크립트, 프레임 및 이미지를 포함하여로드되는 윈도우로드 이벤트가 발생합니다. 또한 몸의 onload =를 사용할 수 있습니다. 모두 동일합니다; 창로드 = 함수 () {}와 동일한 이벤트를 사용하는 다른 방법이있다.

    페이지의 모든 내용이 완전히 DOM (문서 객체 모델) 내용과 비동기 자바 스크립트, 프레임 및 이미지를 포함하여로드되는 윈도우로드 이벤트가 발생합니다. 또한 몸의 onload =를 사용할 수 있습니다. 모두 동일합니다; 창로드 = 함수 () {}와 동일한 이벤트를 사용하는 다른 방법이있다.

    jQuery를이 document.ready 함수 이벤트 창로드보다 조금 일찍 실행하고 DOM (문서 객체 모델) 페이지에로드되면이라고 $. 그것은 완전히 부하를 얻기 위해, 이미지에 대한 프레임을 기다리지 않습니다.

    다음 문서에서 발췌 : $ document.ready ()가 창로드 다른 방법 ()


  5. 5.항상 창에 이벤트를 추가 할 window.addEventListener를 사용합니다. 그런 식으로하기 때문에 다른 이벤트 핸들러의 코드를 실행할 수 있습니다.

    항상 창에 이벤트를 추가 할 window.addEventListener를 사용합니다. 그런 식으로하기 때문에 다른 이벤트 핸들러의 코드를 실행할 수 있습니다.

    올바른 코드 :

    window.addEventListener ( '부하', 함수 () { 경고 ( '안녕하세요!') }) window.addEventListener ( '부하', 함수 () { 경고 ( '안녕!') })

    유효하지 않은 코드:

    창로드 = 함수 () { 경고 ( '안녕하세요!') //이 작업은하지 않습니다! } 창로드 = 함수 () { 경고 ( '안녕!') }

    온로드가 덮어 쓰기 개체, 단지 특성이기 때문이다.

    하여 addEventListener 유추함으로써, 오히려 온로드보다 .ready $ (문서) ()를 사용하는 것이 좋습니다.


  6. 6.$ (문서) .ready (함수 () { // 실행되는 HTML 문서가로드와 DOM이 준비 될 때 경고 ( "문서가 준비되었습니다"); }); jQuery를 1.8에서 사용되지 // .load () 메소드 이후 $ (창) CSTE 연구진 ( "부하"함수 () { // 실행 완료 페이지가 완전히로드 될 때 포함 // 모든 프레임, 객체, 이미지 경고 ( "창로드"); }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">

    $ (문서) .ready (함수 () { // 실행되는 HTML 문서가로드와 DOM이 준비 될 때 경고 ( "문서가 준비되었습니다"); }); jQuery를 1.8에서 사용되지 // .load () 메소드 이후 $ (창) CSTE 연구진 ( "부하"함수 () { // 실행 완료 페이지가 완전히로드 될 때 포함 // 모든 프레임, 객체, 이미지 경고 ( "창로드"); }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">


  7. 7.Internet Explorer를 .ready $ (문서) () 사용에 대한주의의 단어. 전체 문서가로드되기 전에 HTTP 요청이 중단되면 IE는 $ (문서) .ready 이벤트를 트리거합니다 (페이지가 브라우저로 스트리밍하는 동안 예를 들어, 다른 링크는 클릭).

    Internet Explorer를 .ready $ (문서) () 사용에 대한주의의 단어. 전체 문서가로드되기 전에 HTTP 요청이 중단되면 IE는 $ (문서) .ready 이벤트를 트리거합니다 (페이지가 브라우저로 스트리밍하는 동안 예를 들어, 다른 링크는 클릭).

    다음에 해당하는 경우에는 $ (문서) 내에서 코드 .ready () 이벤트를 참조하는 DOM 객체는, 가능성이 그 물체가 발견되지 수 존재하고있는 경우 자바 스크립트 오류가 발생할 수 있습니다. 어느 window.load 이벤트에 해당 개체를 참조하는 개체 또는 연기 코드에 대한 참조를 보호.

    나는 다른 브라우저 (특히, 크롬과 파이어 폭스)에서이 문제를 재현 할 수 없었다


  8. 8.$ (문서) CSTE 연구진은 jQuery를에서 준비 이벤트 ( '준비', 핸들러)에 결합한다. DOM을로드 할 때 핸들러가 호출됩니다. 이미지 같은 자산은 어쩌면 아직 행방 불명된다. 문서 바인딩시 준비 경우가 호출되지 않습니다. jQuery를 사용할 수없는 경우를 모방, 그의 DOMContentLoaded 이벤트를 사용합니다.

    $ (문서) CSTE 연구진은 jQuery를에서 준비 이벤트 ( '준비', 핸들러)에 결합한다. DOM을로드 할 때 핸들러가 호출됩니다. 이미지 같은 자산은 어쩌면 아직 행방 불명된다. 문서 바인딩시 준비 경우가 호출되지 않습니다. jQuery를 사용할 수없는 경우를 모방, 그의 DOMContentLoaded 이벤트를 사용합니다.

    $ (문서) CSTE 연구진 ( '로드', 핸들러)는 모든 자원을 서버에서로드되면 해고 될 이벤트입니다. 이미지는 이제로드됩니다. 온로드는 원시 HTML 이벤트가 있지만, 준비 jQuery를에 의해 만들어집니다.

    $ (문서) .ready (핸들러) 실제로 약속입니다. 핸들러는 문서 호출시 준비 경우 즉시 호출됩니다. 그렇지 않으면 그것은 바로 이벤트에 바인딩합니다.

    jQuery를 1.8 전에 $ (문서) .load (핸들러) $ (문서) CSTE 연구진 ( '로드', 핸들러)에 별칭으로 존재했다.


  9. 9..ready $ (문서) () HTML 문서가 완전히로드 된 때 페이지에있는 모든 것을 포함하여 이미지를로드 할 때 위해 window.onload 이벤트가 나중에 발생하는 동안 발생하는 jQuery를 이벤트입니다.

    .ready $ (문서) () HTML 문서가 완전히로드 된 때 페이지에있는 모든 것을 포함하여 이미지를로드 할 때 위해 window.onload 이벤트가 나중에 발생하는 동안 발생하는 jQuery를 이벤트입니다.

    $ (문서) .ready () 이벤트가 jQuery를의 방법 동안 또한 창로드는 DOM에서 순수 자바 스크립트 이벤트이다.

    $ (문서) .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;
    };
    

    또한 둘 다에 대한 빠른 참조로 아래의 이미지를 만들었습니다 :


  10. 10.창로드 : 정상적인 자바 스크립트 이벤트입니다.

    창로드 : 정상적인 자바 스크립트 이벤트입니다.

    document.ready : 특정의 jQuery를 이벤트를 전체 HTML이로드 된 경우.


  11. 11.기억해야 할 (또는 내 기억을 말해야한다) 한 가지는 당신이 할 수없는 스택 onloads 당신이 준비가 할 수있다. 즉, jQuery를 마법 같은 페이지에 여러 readys 수 있습니다,하지만 당신은 온로드와 함께 할 수 없어.

    기억해야 할 (또는 내 기억을 말해야한다) 한 가지는 당신이 할 수없는 스택 onloads 당신이 준비가 할 수있다. 즉, jQuery를 마법 같은 페이지에 여러 readys 수 있습니다,하지만 당신은 온로드와 함께 할 수 없어.

    마지막으로 온로드는 이전 onloads을 번복 할 것이다.

    이 처리하는 좋은 방법은 함수를 분명히 한 사이먼 윌리 슨에 의해 작성 및 여러 자바 스크립트 온로드 기능을 사용하여 설명과 함께합니다.

    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 */
    });
    

  12. 12.Document.ready (JQuery와 이벤트는) 모든 요소가 제자리에있을 때 발생하며, 그들은 자바 스크립트 코드에서 참조 할 수 있지만 내용이 반드시로드되지 않습니다. HTML 문서를로드 할 때 Document.ready가 실행됩니다.

    Document.ready (JQuery와 이벤트는) 모든 요소가 제자리에있을 때 발생하며, 그들은 자바 스크립트 코드에서 참조 할 수 있지만 내용이 반드시로드되지 않습니다. HTML 문서를로드 할 때 Document.ready가 실행됩니다.

    $(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");
    });
    

  13. 13.HTML 문서가로드되었을 때 document.ready 이벤트가 발생하고, 모든 컨텐츠 (이미지 등)가로드되었을 때 위해 window.onload 이벤트는, 나중에 항상 발생합니다.

    HTML 문서가로드되었을 때 document.ready 이벤트가 발생하고, 모든 컨텐츠 (이미지 등)가로드되었을 때 위해 window.onload 이벤트는, 나중에 항상 발생합니다.

    당신이 부하로 이미지를 기다리지 않고, 렌더링 과정에서 "초기"개입하려는 경우 당신은 document.ready 이벤트를 사용할 수 있습니다. 당신이 당신의 스크립트 전에 이미지 (또는 다른 "내용") 준비가 필요하면 "무언가를", 당신은 창로드 될 때까지 기다릴 필요가있다.

    당신은 "슬라이드 쇼"패턴을 구현하고, 당신은 이미지 크기에 따라 계산을 수행해야하는 경우 예를 들어, 당신은 창로드 될 때까지 기다려야 할 수 있습니다. 그렇지 않으면 이미지가로드되는 얼마나 빨리에 따라, 어떤 임의의 문제가 발생할 수 있습니다. 스크립트는로드 이미지가 스레드와 동시에 실행된다. 스크립트가 충분히, 또는 서버가 충분히 빠른 경우 이미지가 시간에 도착하는 일이 있다면, 당신은 문제를 발견하지 않을 수 있습니다. 이미지가로드받을 수 있도록하지만, 가장 안전한 방법은 허용 될 것이다.

    당신이 사용자에게 약간의 "로드 ..."기호를 표시하는 document.ready 멋진 이벤트가 될 수 있고, 창로드에 따라, 당신은 필요한 자원을로드한다는 스크립팅을 완료하고 마지막으로 제거 할 수 있습니다 "로드를 ..." 기호.

    예 : -

    // 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;
    

  14. 14.창로드는 자바 스크립트 붙박이 기능입니다. 창로드 트리거 HTML 페이지가로드. 창로드는 한 번만 기록 할 수 있습니다.

    창로드는 자바 스크립트 붙박이 기능입니다. 창로드 트리거 HTML 페이지가로드. 창로드는 한 번만 기록 할 수 있습니다.

    document.ready는 jQuery 라이브러리의 함수이다. document.ready 트리거는 HTML과 HTML 파일에 포함 된 모든 자바 스크립트 코드, CSS, 이미지가 완전히로드 될 때. document.ready는 요구 사항에 따라 여러 번 쓸 수 있습니다.


  15. 15.당신이 $ (문서) .ready (F)를 말할 때, 당신은 다음을 수행하는 스크립트 엔진 알려주기 :

    당신이 $ (문서) .ready (F)를 말할 때, 당신은 다음을 수행하는 스크립트 엔진 알려주기 :

    최선의 경우,이 두 해시 테이블 조회이지만, 다른 맵 가능성이 올바른 핸들러에 쿼리가 파견 그래서 즉, $는 jQuery를 모든 가능한 입력의 부엌 싱크대입니다 jQuery를, 수행 무거운 작업을 무시합니다.

    또한, 당신이 할 수 있습니다 :

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

    하는 것입니다

    최선의 경우, 이는 온로드를 가져올해야하기 때문에 필요하다 단일 해시 테이블 룩업을 요한다.

    이상적으로, jQuery를 사용하면 jQuery를 수행하지만, jQuery를의 실행 파견하지 않고 싶어 일을하기 위해 붙여 넣기 할 수 문자열로 자신의 쿼리를 컴파일 할 것이다. 당신이 중 하나의 옵션이이 방법


  16. 16.창로드는 DOM API에서 제공되며, 그것은 "로드 이벤트가 발생 주어진 자원을로드 할 때"라고.

    창로드는 DOM API에서 제공되며, 그것은 "로드 이벤트가 발생 주어진 자원을로드 할 때"라고.

    "문서로드 프로세스의 끝에있는로드 이벤트가 발생합니다.이 시점에서이 문서의 모든 객체는 DOM에있는 모든 이미지, 스크립트, 링크 서브 프레임은 완성 된로드가 있습니다." DOM 온로드

    페이지의 문서 객체 모델 (DOM)은 자바 스크립트 코드가 실행하기에 준비가되면하지만 .ready jQuery를 $ (문서) ()에서만 실행됩니다. 이 이미지, 스크립트, iframe을 등 JQuery와 준비 이벤트가 포함되어 있지 않습니다

    JQuery와 그래서 준비 방법은 이전의 DOM onload 이벤트보다 더 실행됩니다.

  17. from https://stackoverflow.com/questions/3698200/window-onload-vs-document-ready by cc-by-sa and MIT license