window.onload बनाम $ (दस्तावेज़)। पहले से ही ()


1243

जावास्क्रिप्ट window.onloadऔर jQuery की $(document).ready()विधि के बीच अंतर क्या हैं ?



यहां ज्यादातर जवाब पुराने हैं। वर्तमान में जिस तरह से jQuery लागू होता $().ready()है वह window.onloadकई बार इसके बाद आग लगा देता है ।
शिवकेडियल

जवाबों:


1242

readyसमय के बाद HTML दस्तावेज़ लोड किया गया है घटना होती है, onloadघटना, बाद में तब होता है जब सभी सामग्री (जैसे चित्र) भी लोड किया गया है।

onloadजबकि घटना, डोम में एक मानक घटना है readyघटना jQuery के लिए विशिष्ट है। readyघटना का उद्देश्य यह है कि यह दस्तावेज़ लोड होने के बाद जितनी जल्दी हो सके हो, ताकि पृष्ठ में तत्वों को कार्यक्षमता जोड़ने वाले कोड को सभी सामग्री को लोड करने के लिए इंतजार न करना पड़े।


153
@ बैपटेक्स: आप गलत हैं। readyघटना है jQuery के लिए विशिष्ट। DOMContentLoadedयदि यह ब्राउज़र में उपलब्ध है तो यह घटना का उपयोग कर रहा है, अन्यथा यह इसका अनुकरण करता है। DOM में कोई सटीक समतुल्य नहीं है क्योंकि DOMContentLoadedईवेंट सभी ब्राउज़रों में समर्थित नहीं है।
गुफा

18
ठीक है, लेकिन DOMContentLoaded के साथ एक ही परिणाम मौजूद है, हो सकता है कि आपने इसे निर्दिष्ट किया हो
baptx

55
@baptx: मुझे नहीं लगा कि यह प्रश्न के लिए प्रासंगिक था, और मैं अभी भी नहीं।
गुफ़ा

17
क्यों होता है पतन? यदि आप यह नहीं समझाते हैं कि ऐसा क्या है जो आपको लगता है कि यह गलत है, तो इससे उत्तर में सुधार नहीं हो सकता है।
गुफा

4
जैसी कोई घटना नहीं है onloadonloadएक ऑब्जेक्ट प्रॉपर्टी का नाम है जो loadइवेंट ट्रिगर होने पर एक फ़ंक्शन को स्टोर करता है।
स्कॉट मार्कस

140

window.onloadअंतर्निहित जावास्क्रिप्ट घटना है, लेकिन इसके कार्यान्वयन के दौरान ब्राउज़रों (फ़ायरफ़ॉक्स, इंटरनेट एक्सप्लोरर 6, इंटरनेट एक्सप्लोरर 8, और ओपेरा ) में सूक्ष्म quirks थे , jQuery प्रदान करता है , जो उन लोगों को दूर करता है, और जैसे ही पृष्ठ का DOM तैयार होता है। (छवियों के लिए इंतजार नहीं करता है, आदि)।document.ready

$(document).ready(ध्यान दें कि यह नहीं है document.ready , जो अपरिभाषित है) निम्नलिखित घटनाओं के लिए एक jQuery फ़ंक्शन, रैपिंग और स्थिरता प्रदान करता है:

  • document.ondomcontentready/ document.ondomcontentloaded- एक नई घटना जो दस्तावेज़ के डोम लोड होने पर आग लग जाती है (जो छवियों से पहले कुछ समय हो सकती है , आदि लोड होती हैं); फिर से, इंटरनेट एक्सप्लोरर और दुनिया के बाकी हिस्सों में थोड़ा अलग
  • और window.onload(जो पुराने ब्राउज़रों में भी लागू किया गया है), जो पूरे पृष्ठ लोड होने पर आग लग जाती है (चित्र, शैली, आदि)

16
यहां थोड़ी सी गलतफहमी है: की loadघटना को windowब्राउज़रों में लगातार लागू किया जाता है। समस्या जो jQuery और अन्य पुस्तकालयों को हल करने की कोशिश कर रही है वह है जिसका आपने उल्लेख किया है, यह है कि इस loadघटना को निकाल नहीं दिया जाता है जब तक कि सभी आश्रित संसाधन जैसे कि चित्र और स्टाइलशीट लोड नहीं हो जाते हैं, जो डोम के पूरी तरह से लोड होने के बाद लंबे समय तक हो सकता है, गाया और बातचीत के लिए तैयार। DOM तैयार होने पर अधिकांश ब्राउज़रों में आग लगने वाली घटना को बुलाया जाता है DOMContentLoaded, नहीं DOMContentReady
टिम डाउन

2
@Tim डाउन: यथोचित यहाँ कुंजी शब्द है, कम से कम कुछ वस्तु सूँघने के लिए आवश्यक है, यहां तक ​​कि onload(वहाँ मतभेद एफटी एफई / आईई / ओपेरा भी हैं)। के रूप में DOMContentLoaded, आप पूरी तरह से सही हैं। स्पष्ट करने का संपादन।
पिस्कोर ने बिल्डिंग सेप

किस तरह की वस्तु सूँघने का मतलब है?
टिम डाउन

1
@ टाइम डाउन: मुझे पता है कि ओपेरा के पास था , लेकिन इस पर इवेंट ट्रिगर थोड़ा विचित्र था (मज़बूती से ट्रिगर करने के लिए, बेकार document.onloadथा)। जहाँ तक window.onload चला जाता है: window.onload = fn1;window.onload=fn2;- केवल fn2 को ही ऑनलोड लोड मिलेगा। कुछ नि: शुल्क वेबहोस्ट्स अपने स्वयं के कोड को दस्तावेजों में सम्मिलित करते हैं, और कभी-कभी यह इन-पेज कोड को बंद कर देते हैं।
पिस्कोर ने बिल्डिंग सेप

1
क्या "डॉक्यूमेंट। पहले से ही" गलत नहीं है? दस्तावेज़ ऑब्जेक्ट में एक तैयार विधि नहीं है, jQuery ऑब्जेक्ट $ (दस्तावेज़) कॉल से लौटाया जाता है। कृपया इस उत्तर को संपादित करें यदि मैं सही हूं क्योंकि यह बहुत भ्रामक है।
ए। सलाई

87

$(document).ready()एक jQuery की घटना है। $(document).ready()जैसे ही DOM तैयार होता है (जिसका अर्थ है कि ब्राउज़र ने HTML को पार्स कर दिया है और DOM ट्री का निर्माण किया है) जैसे ही JQuery की विधि मिलती है। यह आपको दस्तावेज़ को हेरफेर करने के लिए तैयार होते ही कोड चलाने की अनुमति देता है।

उदाहरण के लिए, यदि कोई ब्राउज़र DOMContentLoaded घटना का समर्थन करता है (जैसा कि कई गैर-IE ब्राउज़र करते हैं), तो यह उस घटना पर आग लगा देगा। (ध्यान दें कि DOMContentLoaded घटना केवल IE9 + में IE में जोड़ी गई थी।)

इसके लिए दो सिंटैक्स का उपयोग किया जा सकता है:

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

या आशुलिपि संस्करण:

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

इसके लिए मुख्य बिंदु $(document).ready():

  • यह छवियों के लोड होने का इंतजार नहीं करेगा।
  • जब डोम पूरी तरह से लोड हो जाता है तो जावास्क्रिप्ट को निष्पादित करने के लिए उपयोग किया जाता है। यहां इवेंट हैंडलर लगाएं।
  • कई बार इस्तेमाल किया जा सकता है।
  • बदलें $के साथ jQueryजब आप प्राप्त "$ परिभाषित नहीं है।"
  • यदि आप छवियों में हेरफेर करना चाहते हैं तो इसका उपयोग नहीं किया जाता है। $(window).load()इसके बजाय उपयोग करें ।

window.onload()एक देशी जावास्क्रिप्ट फ़ंक्शन है। window.onload()घटना पर सक्रिय होता है अपने पृष्ठ पर सभी सामग्री लोड हो जाए, डोम (दस्तावेज़ ऑब्जेक्ट मॉडल), बैनर विज्ञापन और छवियों सहित। दोनों के बीच एक और अंतर यह है कि, जबकि हमारे पास एक से अधिक $(document).ready()फ़ंक्शन हो सकते हैं, हम केवल एक onloadफ़ंक्शन कर सकते हैं ।


4
मामूली बिंदु: IE की चर्चा खराब शब्दों में की गई है। यह नहीं है कि IE (8 और उससे पहले) "सुरक्षित रूप से फायर नहीं कर सकता" जब तक कि दस्तावेज़ का रेडीस्टेट पूरा नहीं हो जाता, तब तक यह IE है में एक DOMContentLoaded घटना का अभाव है। "सुरक्षा" की बात नहीं है, लेकिन IE में एक लापता सुविधा, IE 9. में जोड़ा गया
टूलमेकरसैट

आप सही हैं, इसलिए मैंने आपकी टिप्पणी और धन्यवाद को प्रतिबिंबित करने के लिए उत्तर को संपादित किया!
जेम्स ड्रिंकर्ड

आप कहते हैं "यह छवियों के लोड होने का इंतजार नहीं करेगा।" क्या अन्य फ़ाइलों के बारे में, सबसे महत्वपूर्ण बात? अक्सर किसी अन्य फ़ाइल से फ़ंक्शन को कॉल करने से पहले - मुझे यह जानना होगा कि क्या यह लोड है।
डेरियस .V

यह पूरी तरह से एक और विषय है, लेकिन अगर मैं समझता हूं कि आप क्या पूछ रहे हैं, तो यह इस बात पर आधारित है कि आप अपने पेज को कैसे बनाते हैं, जिसमें आप जेएस फाइलों को किस क्रम में शामिल करते हैं। यहाँ एक लिंक दिया गया है जो और अधिक विवरण में है: ablogaboutcode.com/2011/06/14/… HTH, James
James Drinkard

कोई व्यक्ति $ (दस्तावेज़) का उपयोग पहले से ही () कई बार क्यों करना चाहेगा?
उस्मान

43

जब आपके पृष्ठ की सभी सामग्री DOM (दस्तावेज़ ऑब्जेक्ट मॉडल) सामग्री और अतुल्यकालिक जावास्क्रिप्ट , फ़्रेम और छवियों सहित पूरी तरह लोड हो जाती है, तो एक विंडोज लोड घटना आग हो जाती है । आप बॉडी ऑनलोड = का भी उपयोग कर सकते हैं। दोनों एक ही हैं; और एक ही घटना के उपयोग के विभिन्न तरीके हैं।window.onload = function(){}<body onload="func();">

jQuery$document.ready फ़ंक्शन ईवेंट window.onloadआपके पृष्ठ पर DOM (दस्तावेज़ ऑब्जेक्ट मॉडल) लोड होने के बाद पहले की तुलना में थोड़ा सा निष्पादित होता है । यह पूरी तरह से लोड होने के लिए छवियों, फ़्रेमों का इंतजार नहीं करेगा ।

निम्नलिखित लेख से लिया गया: कैसे $document.ready()अलग हैwindow.onload()


मुझे लगता है कि यह सबसे अच्छा जवाब है!
हाओउ चेन

3
अगर यह शब्द-दर-शब्द कॉपी नहीं किया गया तो मैं सहमत हो सकता हूं।
केविन बी

23

$(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>


22

$(document).ready()इंटरनेट एक्सप्लोरर के साथ उपयोग करने पर सावधानी का एक शब्द । यदि संपूर्ण दस्तावेज़ लोड होने से पहले एक HTTP अनुरोध बाधित हो जाता है (उदाहरण के लिए, जबकि एक पृष्ठ ब्राउज़र को स्ट्रीमिंग कर रहा है, तो एक और लिंक पर क्लिक किया जाता है) IE ट्रिगर होगा$(document).ready घटना ।

यदि $(document).ready()ईवेंट के भीतर कोई कोड डोम ऑब्जेक्ट्स को संदर्भित करता है, तो संभावित उन ऑब्जेक्ट्स के लिए मौजूद नहीं है और जावास्क्रिप्ट त्रुटियां हो सकती हैं। या तो उन वस्तुओं के लिए अपने संदर्भों की रक्षा करें, या कोड को हटाएं जो उन वस्तुओं को खिड़की पर लोड करता है। घटना।

मैं अन्य ब्राउज़र (विशेष रूप से, क्रोम और फ़ायरफ़ॉक्स) में इस समस्या को पुन: पेश करने में सक्षम नहीं हूं


IE का कौन सा संस्करण? मुझे पता है कि मुझे संगतता की परवाह करनी चाहिए, लेकिन यह IE के साथ कठिन है। क्या यह केवल जावास्क्रिप्ट के लिए document.ready का उपयोग करने के लिए स्वीकार्य है?
मोनिका


22

थोड़ा टिप:

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!') 
}

ऐसा इसलिए है क्योंकि ओनलोड वस्तु की संपत्ति है, जो ओवरराइट की गई है।

के साथ सादृश्य द्वारा addEventListener, यह $(document).ready()onload के बजाय उपयोग करने के लिए बेहतर है ।


3
यह पूछे गए प्रश्न का उत्तर नहीं देता है।

17

आयोजन

$(document).on('ready', handler)jQuery से तैयार घटना के लिए बाध्य करता है। डोम लोड होने पर हैंडलर को कहा जाता हैचित्र जैसी संपत्तियाँ शायद अभी भी गायब हैं । यह कभी नहीं कहा जाएगा कि क्या दस्तावेज बाध्यकारी के समय तैयार है। jQuery उस के लिए DOMContentLoaded -Event का उपयोग करता है, यदि उपलब्ध नहीं है तो उसका अनुकरण करता है।

$(document).on('load', handler)एक घटना है जिसे सभी संसाधनों को सर्वर से लोड किए जाने के बाद निकाल दिया जाएगा । अब चित्र लोड किए गए हैं। जबकि onload एक कच्चा HTML ईवेंट है, तैयार jQuery द्वारा बनाया गया है।

कार्य

$(document).ready(handler)वास्तव में एक वादा हैकॉलिंग के समय दस्तावेज़ तैयार होने पर हैंडलर को तुरंत बुलाया जाएगा। अन्यथा यह ready-ईवेंट को बांधता है ।

JQuery 1.8 से पहले , $(document).load(handler)एक उपनाम के रूप में मौजूद था $(document).on('load',handler)

आगे की पढाई


क्या आप $ (दस्तावेज़) को समझा सकते हैं। लोड (हैंडलर) लोड-ईवेंट के लिए बाध्यकारी के समान व्यवहार करता है। $ .Fn.ready के विपरीत, यह तुरंत कॉल नहीं करेगा?
नबील खान

मुझे लगता है कि आप इस बात से भ्रमित हो गए $.fn.loadकि अब इवेंट बाइंडर के रूप में व्यवहार नहीं करता है। वास्तव में, यह 1.8 के बाद से आज्ञाकारिता है। मैंने इसे तदनुसार अपडेट किया
abstraktor

16

$(document).ready()एक है jQuery जबकि, घटना है जो जब HTML दस्तावेज़ पूरी तरह से लोड किया गया है तब होता है window.onloadघटना, बाद में तब होता है जब पृष्ठ पर सब कुछ शामिल है छवियों लोड।

इसके अलावा window.onload DOM में एक शुद्ध जावास्क्रिप्ट इवेंट है, जबकि $(document).ready()इवेंट 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;
};

इसके अलावा, मैंने नीचे दिए गए चित्र को दोनों के लिए एक त्वरित संदर्भ के रूप में बनाया है:

यहां छवि विवरण दर्ज करें


1
सुंदर, डॉक्स का जिक्र एक प्लस पॉइंट है .. thnx
इरफ


11

एक बात याद रखने की (या मुझे यह कहते हुए याद रखनी चाहिए) यह है कि आप उस onloadतरह से ढेर नहीं कर सकते जैसे आप कर सकते हैं ready। दूसरे शब्दों में, jQuery का जादू readyएक ही पृष्ठ पर कई एस की अनुमति देता है , लेकिन आप ऐसा नहीं कर सकते onload

पिछले onloadकिसी भी पिछले 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 */
});

11

Document.ready(एक jQuery घटना) सभी तत्वों के स्थान पर आग लग जाएगी, और उन्हें जावास्क्रिप्ट कोड में संदर्भित किया जा सकता है, लेकिन सामग्री आवश्यक रूप से भरी हुई नहीं है। Document.readyHTML डॉक्यूमेंट लोड होने पर निष्पादित होता है।

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

5

दस्तावेज़। पहले से मौजूद घटना तब होती है जब HTML दस्तावेज़ लोड किया गया है, और यह window.onloadघटना हमेशा बाद में होती है, जब सभी सामग्री (चित्र, आदि) लोड हो चुकी होती है।

document.readyयदि आप छवियों को लोड करने के लिए इंतजार किए बिना, आप इस प्रक्रिया का उपयोग कर सकते हैं, तो आप "प्रक्रिया" में हस्तक्षेप करना चाहते हैं। यदि आपको अपनी स्क्रिप्ट "कुछ करने" से पहले तैयार चित्रों (या किसी अन्य "सामग्री") की आवश्यकता है, तो आपको तब तक प्रतीक्षा करने की आवश्यकता हैwindow.onload

उदाहरण के लिए, यदि आप "स्लाइड शो" पैटर्न लागू कर रहे हैं, और आपको छवि आकारों के आधार पर गणना करने की आवश्यकता है, तो आप तब तक इंतजार करना चाहते हैं window.onload। अन्यथा, आप कुछ यादृच्छिक समस्याओं का अनुभव कर सकते हैं, यह इस बात पर निर्भर करता है कि छवियां कितनी तेज़ी से लोड होंगी। आपकी स्क्रिप्ट छवियों को लोड करने वाले थ्रेड के साथ समवर्ती रूप से चल रही होगी। यदि आपकी स्क्रिप्ट काफी लंबी है, या सर्वर काफी तेज है, तो आप एक समस्या को नोटिस नहीं कर सकते हैं, अगर छवियां समय पर आने के लिए होती हैं। लेकिन सबसे सुरक्षित अभ्यास छवियों को लोड करने के लिए अनुमति देगा।

document.ready उपयोगकर्ताओं के लिए कुछ "लोडिंग ..." साइन दिखाने के लिए आपके लिए एक अच्छी घटना हो सकती है window.onload , आप किसी भी स्क्रिप्टिंग को पूरा कर सकते हैं, जिसे संसाधनों की आवश्यकता होती है, और फिर अंत में "लोड हो रहा है ..." साइन को हटा दें।

उदाहरण :-

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

2

window.onloadएक जावास्क्रिप्ट इनबिल्ट फ़ंक्शन है। window.onloadHTML पेज लोड होने पर ट्रिगर। window.onloadकेवल एक बार लिखा जा सकता है।

document.readyjQuery लाइब्रेरी का एक कार्य है। document.readyजब HTML और सभी जावास्क्रिप्ट कोड, CSS और HTML फ़ाइल में शामिल किए गए चित्र पूरी तरह से लोड हो जाते हैं। document.readyआवश्यकताओं के अनुसार कई बार लिखा जा सकता है।


"window.onload एक फ़ंक्शन है" गलत है क्योंकि @ Илья-леленько यह दर्शाता है कि यह एक संपत्ति है और फ़ंक्शन नहीं है। विवरण: developer.mozilla.org/en-US/docs/Web/API/GlobalEventHand// जबकि। पहले से ही () एक फ़ंक्शन है और एक हैंडलर की अपेक्षा करता है।
vik

1

जब आप कहते हैं $(document).ready(f), आप स्क्रिप्ट इंजन को निम्न कार्य करने के लिए कहते हैं :

  1. ऑब्जेक्ट डॉक्यूमेंट प्राप्त करें और इसे पुश करें, क्योंकि यह स्थानीय स्कोप में नहीं है, यह डॉक्यूमेंट देखने के लिए हैश टेबल लुकअप जरूर करना चाहिए, जहां सौभाग्य से डॉक्यूमेंट ग्लोबली बाउंड है इसलिए यह सिंगल लुकअप है।
  2. ऑब्जेक्ट ढूंढें $और इसे चुनें, क्योंकि यह स्थानीय दायरे में नहीं है, इसे हैश टेबल लुकअप करना चाहिए, जिसमें टकराव हो सकता है या नहीं।
  3. ऑब्जेक्ट को वैश्विक दायरे में खोजें, जो एक और हैश टेबल लुकअप है, या फ़ंक्शन ऑब्जेक्ट को पुश करें और इसे प्रारंभ करें।
  4. readyचयनित ऑब्जेक्ट की कॉल , जिसमें विधि खोजने और इसे लागू करने के लिए चयनित ऑब्जेक्ट में एक और हैश टेबल लुकअप शामिल है।
  5. किया हुआ।

सबसे अच्छे मामले में, यह 2 हैश टेबल लुकअप है, लेकिन यह jQuery द्वारा किए गए भारी काम की अनदेखी कर रहा है, जहां $ के लिए सभी संभावित आदानों का किचन सिंक है, इसलिए हैंडलर को सही करने के लिए क्वेरी भेजने के लिए एक और नक्शा होने की संभावना है।

वैकल्पिक रूप से, आप ऐसा कर सकते हैं:

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

जो होगा

  1. ऑब्जेक्ट विंडो को वैश्विक दायरे में खोजें, यदि जावास्क्रिप्ट को अनुकूलित किया गया है, तो यह पता चलेगा कि चूंकि विंडो नहीं बदली गई है, इसलिए इसमें पहले से ही चयनित ऑब्जेक्ट है, इसलिए कुछ भी करने की आवश्यकता नहीं है।
  2. फ़ंक्शन ऑब्जेक्ट को ऑपरेंड स्टैक पर धकेल दिया जाता है।
  3. चेक करें कि onloadक्या कोई प्रॉपर्टी है या नहीं, हैश टेबल लुकअप करके, क्योंकि यह है, इसे फंक्शन की तरह कहा जाता है।

सबसे अच्छे मामले में, यह एक एकल हैश टेबल लुकअप है, जो आवश्यक है क्योंकि प्राप्त किया onloadजाना चाहिए।

आदर्श रूप से, jQuery अपने प्रश्नों को उन स्ट्रिंग्स के लिए संकलित करेगा जिन्हें आप पेस्ट कर सकते हैं जो आप jQuery करना चाहते थे, लेकिन jQuery के रनटाइम प्रेषण के बिना। इस तरह आपके पास या तो एक विकल्प है

  1. आज हम जैसा करते हैं, वैसा ही जॉकरी का गतिशील प्रेषण करें।
  2. jQuery के शुद्ध जावास्क्रिप्ट स्ट्रिंग के लिए अपनी क्वेरी संकलित करें जिसे आप चाहते हैं कि करने के लिए eval को पारित किया जा सकता है।
  3. 2 के परिणाम को सीधे अपने कोड में कॉपी करें, और की लागत को छोड़ दें eval

0

window.onload DOM api द्वारा प्रदान किया गया है और यह कहता है कि "लोड घटना तब होती है जब किसी दिए गए संसाधन ने लोड किया हो"।

"दस्तावेज़ लोडिंग प्रक्रिया के अंत में लोड ईवेंट फायर हो जाता है। इस बिंदु पर, दस्तावेज़ में सभी ऑब्जेक्ट DOM में हैं, और सभी छवियों, स्क्रिप्ट, लिंक और उप-फ़्रेम ने लोडिंग समाप्त कर दी है।" डोम ऑनलोड

लेकिन jQuery में $ (दस्तावेज़) पहले से ही () केवल तभी चलेगा जब पेज डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM) जावास्क्रिप्ट कोड को निष्पादित करने के लिए तैयार हो। इसमें चित्र, स्क्रिप्ट, iframes आदि शामिल नहीं हैं jquery तैयार घटना

तो jquery तैयार विधि डोम ओनलोड घटना की तुलना में पहले चलेगी ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.