উইন্ডো.অনলোড বনাম $ (নথি)। প্রস্তুত ()


1243

জাভাস্ক্রিপ্ট window.onloadএবং jQuery এর $(document).ready()পদ্ধতির মধ্যে পার্থক্য কী ?



এখানে বেশিরভাগ উত্তর পুরানো। JQuery বর্তমানে যেভাবে প্রয়োগ $().ready()করে তা এটি window.onloadসময়ে সময়ে আগুনে পরিণত করে।
শিক্কেডিয়েল

উত্তর:


1242

readyসময় পরে HTML ডকুমেন্ট লোড হয়েছে ঘটনা ঘটে, onloadঘটনা, পরে দেখা দেয় যখন সমস্ত সামগ্রী (যেমন চিত্র) এছাড়াও লোড হয়েছে।

onloadযখন ইভেন্ট, DOM মধ্যে একটি প্রমিত ঘটনা readyঘটনা jQuery থেকে নির্দিষ্ট। readyইভেন্টটির উদ্দেশ্য হ'ল ডকুমেন্টটি লোড হওয়ার পরে যত তাড়াতাড়ি সম্ভব এটি হওয়া উচিত, যাতে পৃষ্ঠার উপাদানগুলিতে কার্যকারিতা যুক্ত করার কোডটি সমস্ত সামগ্রী লোড হওয়ার জন্য অপেক্ষা করতে হবে না।


153
@ ব্যাপটেক্স: আপনি ভুল বলেছেন। readyঘটনা হল jQuery এর নির্দিষ্ট। এটি DOMContentLoadedইভেন্টটি ব্রাউজারে উপলভ্য থাকলে তা ব্যবহার করছে , অন্যথায় এটি তা অনুকরণ করে। ডিওমে কোনও সঠিক সমতুল্য নেই কারণ DOMContentLoadedইভেন্টটি সমস্ত ব্রাউজারে সমর্থিত নয়।
গুফা

18
ঠিক আছে তবে একই ফলাফলটি
ডমকন্টেন্টলয়েডের

55
@ ব্যাপটেক্স: আমি মনে করি না যে এটি প্রশ্নটি থেকে বিরত রয়েছে, এবং আমি এখনও তা করি না।
গুফা

17
ডাউনটা কেন? আপনি যদি ভুল বলে মনে করেন তবে এটি কী ব্যাখ্যা না করে তবে উত্তরটি উন্নত করতে পারে না।
গুফা

4
তেমন কোনও অনুষ্ঠান নেই onload। ইভেন্টটির ট্রিগার onloadহওয়ার সাথে সাথে একটি ক্রিয়াকলাপটি সঞ্চয় করার জন্য এমন কোনও অবজেক্ট প্রোপার্টিটির নাম load
স্কট মার্কাস

140

window.onloadঅন্তর্নিহিত জাভাস্ক্রিপ্ট ইভেন্ট, তবে এর বাস্তবায়নের ফলে ব্রাউজারগুলিতে সূক্ষ্ম কীর্তি ছিল (ফায়ারফক্স, ইন্টারনেট এক্সপ্লোরার 6, ইন্টারনেট এক্সপ্লোরার 8, এবং অপেরা ), jQuery সরবরাহ করে document.ready, যা সেগুলি দূরে রেখে দেয় এবং পৃষ্ঠার ডিওএম প্রস্তুত হওয়ার সাথে সাথে আগুন জ্বলে ওঠে s (চিত্র ইত্যাদির জন্য অপেক্ষা করে না)।

$(document).ready(নোট করুন যে এটি নয় document.ready , যা পূর্বনির্ধারিত নয়) একটি jQuery ফাংশন, নিম্নলিখিত ইভেন্টগুলিতে মোড়ানো এবং ধারাবাহিকতা সরবরাহ করে:

  • document.ondomcontentready/ document.ondomcontentloaded- একটি নব্য ঘটনা যা ডকুমেন্টের ডিওএম লোড হয়ে যাওয়ার পরে আগুনে ছড়িয়ে পড়ে (যা চিত্রগুলি লোড হওয়ার কিছুটা সময় আগে হতে পারে ); আবার, ইন্টারনেট এক্সপ্লোরার এবং বিশ্বের অন্যান্য অংশে কিছুটা আলাদা
  • এবং window.onload(যা পুরানো ব্রাউজারগুলিতে এমনকি প্রয়োগ করা হয়), যখন পুরো পৃষ্ঠাটি লোড হয় (চিত্র, শৈলী ইত্যাদি) জ্বলে ওঠে

16
এখানে একটি সামান্য ভুল ধারণা রয়েছে: ব্রাউজারগুলিতে loadইভেন্টটি windowযথাযথভাবে ধারাবাহিকভাবে প্রয়োগ করা হয়। JQuery এবং অন্যান্য লাইব্রেরিগুলি যে সমস্যার সমাধান করতে চাইছে তা হ'ল আপনি উল্লেখ করেছেন, এটি হ'ল loadইভেন্টটি চালানো হয় না যতক্ষণ না সমস্ত নির্ভরশীল সংস্থান যেমন চিত্র এবং স্টাইলশিট লোড না হয়ে থাকে যা ডিওএম সম্পূর্ণরূপে লোড হওয়ার পরে দীর্ঘ সময় হতে পারে, রেন্ডার এবং ইন্টারঅ্যাকশন জন্য প্রস্তুত। DOM প্রস্তুত হওয়ার সময় বেশিরভাগ ব্রাউজারগুলিতে যে ইভেন্টটি ছড়িয়ে পড়ে তাকে ডাকা হয় DOMContentLoaded, না DOMContentReady
টিম ডাউন

2
@ টিম ডাউন: যুক্তিযুক্তভাবে এখানে মূল শব্দটি রয়েছে; কমপক্ষে কিছু বস্তুর স্নিফিং প্রয়োজনীয় ছিল, এমনকি onloadএটির সাথেও রয়েছে (এফএফ / আইই / অপেরা পার্থক্য রয়েছে)। হিসাবে DOMContentLoaded, আপনি সম্পূর্ণরূপে সঠিক। স্পষ্ট করার জন্য সম্পাদনা।
পিসকভোর

আপনি কী ধরনের অবজেক্ট স্নিফিং বলতে চাইছেন?
টিম ডাউন

1
@ টিম ডাউন: আমি জানি যে অপেরা এটির ছিল , তবে এটির ইভেন্ট ট্রিগারটি কিছুটা উদ্ভট ছিল (নির্ভরযোগ্যভাবে ট্রিগার করতে, document.onloadব্যবহারযোগ্য ছিল)। window.onload = fn1;window.onload=fn2;উইন্ডো.অনলোড যতদূর যায়: - কেবল fn2 চালিত অনলোডটি পেত। কিছু নিখরচায় ওয়েবহোস্টগুলি ডকুমেন্টগুলিতে তাদের নিজস্ব কোড sertোকায় এবং কখনও কখনও এটি ইন-পৃষ্ঠা কোডটি ক্লাব করে।
পিসকভোর

1
"ডকুমেন্ট.ডিয়ার" লেখা কি ভুল নয়? ডকুমেন্ট অবজেক্টে একটি প্রস্তুত পদ্ধতি নেই, jQuery অবজেক্টটি $ (ডকুমেন্ট) কল থেকে ফিরে এসেছে। আমি সঠিক হলে দয়া করে এই উত্তরটি সম্পাদনা করুন কারণ এটি খুব বিভ্রান্তিকর।
এ সল্লাই

87

$(document).ready()একটি jQuery ইভেন্ট। ডিওএম প্রস্তুত হওয়ার $(document).ready()সাথে সাথেই জিকুয়ের পদ্ধতিটি কল হয়ে যায় (যার অর্থ ব্রাউজারটি এইচটিএমএলকে বিশ্লেষণ করে ডোম গাছ তৈরি করেছে)। ডকুমেন্টটি ম্যানিপুলেট করার জন্য প্রস্তুত হওয়ার সাথে সাথে এটি আপনাকে কোড চালানোর অনুমতি দেয়।

উদাহরণস্বরূপ, যদি কোনও ব্রাউজার ডোমকন্টেন্টলয়েড ইভেন্টটিকে সমর্থন করে (অনেকগুলি নন-আইই ব্রাউজারগুলি করে) তবে এটি সেই ইভেন্টে ছড়িয়ে যাবে। (দ্রষ্টব্য যে DOMContentLoaded ইভেন্টটি কেবল আই 9 + এ আইইতে যুক্ত করা হয়েছিল))

এর জন্য দুটি বাক্য গঠন ব্যবহার করা যেতে পারে:

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

বা শর্টহ্যান্ড সংস্করণ:

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

প্রধান পয়েন্ট $(document).ready():

  • এটি চিত্রগুলি লোড হওয়ার জন্য অপেক্ষা করবে না।
  • জাভাস্ক্রিপ্ট কার্যকর করতে ব্যবহৃত হয় যখন ডিওএম সম্পূর্ণ লোড হয়। ইভেন্ট হ্যান্ডলারদের এখানে রাখুন।
  • একাধিকবার ব্যবহার করা যায়।
  • আপনি যখন পাবেন "$ সংজ্ঞায়িত করা হয়নি" $সাথে প্রতিস্থাপন করুন jQuery
  • আপনি ইমেজ ম্যানিপুলেট করতে চান ব্যবহার করা হয় না। $(window).load()পরিবর্তে ব্যবহার করুন।

window.onload()একটি নেটিভ জাভাস্ক্রিপ্ট ফাংশন। window.onload()আপনার পৃষ্ঠার সমস্ত সামগ্রী DOM (ডকুমেন্ট অবজেক্ট মডেল), ব্যানার বিজ্ঞাপন এবং চিত্র সহ লোড হয়ে যাওয়ার পরে ইভেন্টটি জ্বলে উঠবে। উভয়ের মধ্যে আরেকটি পার্থক্য হ'ল আমাদের একাধিক $(document).ready()ফাংশন থাকতে পারে, তবে আমরা কেবল একটির onloadকাজ করতে পারি ।


4
মাইনর পয়েন্ট: আইই এর আলোচনাটি খারাপভাবে কথিত নয়। এটি নয় যে দস্তাবেজের রেডিস্টেট সম্পূর্ণ না হওয়া পর্যন্ত IE (8 এবং তার আগে) "নিরাপদে গুলি চালাতে পারে না" , IE এর কোনও DOMContentLoaded ইভেন্টের অভাব রয়েছে । "সুরক্ষা" এর বিষয় নয়, তবে
আইইয়ের

আপনি সঠিক, তাই আমি আপনার মন্তব্য এবং ধন্যবাদ প্রতিফলিত উত্তর সম্পাদনা!
জেমস ড্রিঙ্কার্ড

আপনি বলছেন "এটি চিত্রগুলি লোড হওয়ার জন্য অপেক্ষা করবে না।" অন্যান্য ফাইলগুলির সম্পর্কে কী, সবচেয়ে গুরুত্বপূর্ণভাবে জেএস? প্রায়শই অন্য ফাইল থেকে ফাংশন কল করার আগে - আমার এটি লোড হয়েছে কিনা তা জানতে হবে।
দারিয়াস.ভি

এটি সম্পূর্ণরূপে অন্য একটি বিষয়, তবে আপনি কী জিজ্ঞাসা করছেন তা যদি আমি বুঝতে পারি তবে আপনি জেএস ফাইলগুলি কী অর্ডার করবেন তা সহ আপনি কীভাবে আপনার পৃষ্ঠাটি কাঠামো গঠন করবেন তার উপর ভিত্তি করে। এখানে আরও একটি বিশদে যাওয়ার লিঙ্কটি দেওয়া হয়েছে: ablogaboutcode.com/2011/06/14/… এইচটিএইচ , জেমস
জেমস

কেন কেউ $ (নথি) ব্যবহার করতে চাইবে? একাধিকবার প্রস্তুত ()?
উসমান

43

আপনার পৃষ্ঠার সমস্ত সামগ্রী DOM (ডকুমেন্ট অবজেক্ট মডেল) সামগ্রী এবং অ্যাসিঙ্ক্রোনাস জাভাস্ক্রিপ্ট , ফ্রেম এবং চিত্র সহ সম্পূর্ণ লোড হয়ে গেলে একটি উইন্ডোজ লোড ইভেন্টে আগুন জ্বলে ওঠে । আপনি বডি অনলোড =ও ব্যবহার করতে পারেন। উভয়ই এক; এবং একই ইভেন্টটি ব্যবহারের বিভিন্ন উপায়।window.onload = function(){}<body onload="func();">

jQuery$document.ready ফাংশন ইভেন্টটি তার আগে একটু আগে সম্পাদন করে window.onloadএবং ডুম (ডকুমেন্ট অবজেক্ট মডেল) আপনার পৃষ্ঠায় লোড হওয়ার পরে একবার ডেকে আনে। এটি চিত্র, ফ্রেম পুরোপুরি লোড হওয়ার জন্য অপেক্ষা করবে না ।

নিম্নলিখিত নিবন্ধ থেকে নেওয়া: কিভাবে $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()ইন্টারনেট এক্সপ্লোরার ব্যবহার করে সতর্কতার একটি শব্দ । পুরো ডকুমেন্টটি লোড হওয়ার আগে যদি কোনও এইচটিটিপি অনুরোধ বাধাগ্রস্থ হয় (উদাহরণস্বরূপ, যখন কোনও পৃষ্ঠা ব্রাউজারে প্রবাহিত হয়, অন্য লিঙ্কটি ক্লিক করা হয়) আইই $(document).readyইভেন্টটি ট্রিগার করবে ।

$(document).ready()ইভেন্টের মধ্যে কোনও কোড যদি ডিওএম অবজেক্টের উল্লেখ করে তবে সেই বস্তুগুলির সন্ধানের সম্ভাবনা নেই এবং জাভাস্ক্রিপ্ট ত্রুটি ঘটতে পারে। হয় objects অবজেক্টগুলির জন্য আপনার রেফারেন্সগুলি রক্ষা করুন, বা কোডটি ডিফেন্ড করুন যা সেই বিষয়গুলিকে উইন্ডো.লোট ইভেন্টে রেফার করে।

আমি অন্যান্য ব্রাউজারগুলিতে এই সমস্যাটি পুনরুত্পাদন করতে সক্ষম হইনি (বিশেষত ক্রোম এবং ফায়ারফক্স)


আইই এর কোন সংস্করণ? আমি জানি আমার সামঞ্জস্যতা সম্পর্কে যত্ন নেওয়া উচিত তবে আইইয়ের সাথে এটি কঠিন hard ডকুমেন্টটি ব্যবহার করা কি গ্রহণযোগ্য? কেবল জাভাস্ক্রিপ্টের জন্য প্রস্তুত?
মনিকা 20


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()লোডের চেয়ে ব্যবহার করা ভাল ।


3
এটি জিজ্ঞাসিত প্রশ্নের উত্তর দেয় না।

17

ঘটনাবলী

$(document).on('ready', handler)jQuery থেকে প্রস্তুত ইভেন্টের সাথে আবদ্ধ। ডিওএম লোড হওয়ার পরে হ্যান্ডলারটি ডাকা হয়চিত্রগুলির মতো সম্পদ সম্ভবত এখনও অনুপস্থিত । বাঁধাইয়ের সময় নথিটি প্রস্তুত থাকলে এটি কখনই ডাকা হবে না। jQuery এর ব্যবহার DOMContentLoaded , যে জন্য -Event এটা এমুলেট যদি উপলব্ধ নয়।

$(document).on('load', handler)সার্ভার থেকে সমস্ত সংস্থান লোড হয়ে যাওয়ার পরে তা বরখাস্ত করা হবে এমন একটি ইভেন্ট । চিত্রগুলি এখন লোড হয়েছে। অনলোড যখন একটি কাঁচা এইচটিএমএল ইভেন্ট হয়, প্রস্তুত jQuery দ্বারা নির্মিত হয়।

ক্রিয়াকলাপ

$(document).ready(handler)আসলে একটি প্রতিশ্রুতিকল করার সময় নথি প্রস্তুত থাকলে অবিলম্বে হ্যান্ডলারটি কল করা হবে। অন্যথায় এটি- readyইভেন্টের সাথে আবদ্ধ হয় ।

JQuery 1.8 এর আগে , $(document).load(handler)একটি উপন্যাস হিসাবে উপস্থিত ছিল $(document).on('load',handler)

আরও পড়া


আপনি দয়া করে ব্যাখ্যা করতে পারেন document (দস্তাবেজ) (লোড-ইভেন্টের সাথে জড়িত হিসাবে লোড (হ্যান্ডলার) একই আচরণ করে। F .fn. तयारी থেকে ভিন্ন, এটি সঙ্গে সঙ্গে কল করা হবে না?
নবেল খান

আমি মনে করি আপনি এতে বিভ্রান্ত হয়ে $.fn.loadপড়েছেন এখন আর ইভেন্ট বাইন্ডার হিসাবে আচরণ করবেন না। আসলে, এটি jquery 1.8 থেকে অপ্রচলিত। আমি সে অনুযায়ী এটি আপডেট করেছি
বিমূর্তি

16

এটি $(document).ready()হ'ল একটি jQuery ইভেন্ট যা এইচটিএমএল ডকুমেন্টটি পুরোপুরি লোড হয়ে যাওয়ার window.onloadপরে ঘটে থাকে, যখন ঘটনাটি পরে ঘটে থাকে, যখন পৃষ্ঠার চিত্রগুলি সহ সমস্ত কিছু লোড হয়।

উইন্ডো.অনলোডটি ডিওমে একটি খাঁটি জাভাস্ক্রিপ্ট ইভেন্ট, যখন $(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

13

উইন্ডো.নলোড: একটি সাধারণ জাভাস্ক্রিপ্ট ইভেন্ট।

ডকুমেন্ট.ডিয়ার: পুরো এইচটিএমএলটি লোড হয়ে যাওয়ার পরে একটি নির্দিষ্ট jQuery ইভেন্ট।


11

একটি জিনিস মনে রাখতে হবে (বা আমি প্রত্যাহার করে বলি) হ'ল আপনি নিজের onloadমতো করে স্ট্যাক করতে পারবেন না ready। অন্য কথায়, jQuery যাদু readyএকই পৃষ্ঠায় একাধিক গুলিকে অনুমতি দেয় তবে আপনি এটি দিয়ে এটি করতে পারবেন না onload

শেষটি onloadপূর্বের যেকোনো একটিকে ছাড়িয়ে দেবে onload

এর সাথে মোকাবিলা করার একটি দুর্দান্ত উপায় হ'ল একটি ফাংশন যা স্পষ্টতই একজন সাইমন উইলিসন লিখেছেন এবং একাধিক জাভাস্ক্রিপ্ট অনোলড ফাংশন ব্যবহার করে বর্ণনা করেছেন ।

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.readyএইচটিএমএল ডকুমেন্টটি লোড হওয়ার পরে কার্যকর করে।

$(document).ready(function() {

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

window.loadজন্য পৃষ্ঠা সম্পূর্ণরূপে লোড করা তবে অপেক্ষা করতে হবে। এর মধ্যে রয়েছে অভ্যন্তরীণ ফ্রেম, চিত্র ইত্যাদি includes

$(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.onloadএইচটিএমএল পৃষ্ঠা লোড হওয়ার পরে ট্রিগার করুন। window.onloadশুধুমাত্র একবার লেখা যেতে পারে।

document.readyjQuery লাইব্রেরির একটি ফাংশন। document.readyএইচটিএমএল এবং সমস্ত জাভাস্ক্রিপ্ট কোড, সিএসএস এবং এইচটিএমএল ফাইলের অন্তর্ভুক্ত চিত্রগুলি সম্পূর্ণ লোড হয়ে যাওয়ার পরে ট্রিগার হয়। document.readyপ্রয়োজনীয়তা অনুসারে একাধিকবার লেখা যেতে পারে।


"উইন্ডো.অনলোড একটি ফাংশন" যেমনটি @ Илья-rates দেখায় যে এটি কোনও সম্পত্তি হিসাবে কাজ করে তবে এটি কোনও ফাংশন নয়। বিশদ: ডেভেলপার.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / এপিআই / গ্লোবাল এভেন্টহ্যান্ডার্স / whereas যেখানে .ডিডি () একটি ফাংশন এবং একটি হ্যান্ডলার আশা করে।
ভিক

1

আপনি যখন বলেন $(document).ready(f), আপনি স্ক্রিপ্ট ইঞ্জিনকে নিম্নলিখিতটি করতে বলুন:

  1. অবজেক্ট ডকুমেন্টটি পান এবং এটিকে ধাক্কা দিন, যেহেতু এটি স্থানীয় স্কোপে নেই, ডকুমেন্টটি কোথায় রয়েছে তা অনুসন্ধানের জন্য এটি অবশ্যই একটি হ্যাশ টেবিল লকআপ করতে হবে, ভাগ্যক্রমে ডকুমেন্টটি বিশ্বব্যাপী আবদ্ধ তাই এটি একটি একক অনুসন্ধান।
  2. অবজেক্টটি সন্ধান করুন $এবং এটি নির্বাচন করুন, যেহেতু এটি স্থানীয় ক্ষেত্রের মধ্যে নেই, সুতরাং এটি অবশ্যই একটি হ্যাশ টেবিল সন্ধান করবে, যার সংঘর্ষ বা নাও থাকতে পারে।
  3. বিশ্বব্যাপী স্কোপ অবজেক্টটি সন্ধান করুন যা হ্যাশ টেবিলের অন্য একটি লুক, বা ফাংশন অবজেক্টটিকে ধাক্কা দিয়ে এটিকে আরম্ভ করুন।
  4. readyনির্বাচিত অবজেক্টের কল , পদ্ধতিটি খুঁজে পেতে এবং এটি প্রার্থনা করার জন্য নির্বাচিত অবজেক্টটিতে আরও একটি হ্যাশ টেবিল অনুসন্ধান অন্তর্ভুক্ত।
  5. সম্পন্ন.

সর্বোত্তম ক্ষেত্রে, এটি 2 হ্যাশ টেবিল লুকআপ, তবে এটি jQuery দ্বারা করা ভারী কাজকে উপেক্ষা করছে, যেখানে jQuery $এর সমস্ত সম্ভাব্য ইনপুটগুলির রান্নাঘর সিঙ্ক রয়েছে, সুতরাং হ্যান্ডলারের সংশোধন করার জন্য কোয়েরিটি প্রেরণের জন্য অন্য কোনও মানচিত্র সম্ভবত রয়েছে।

বিকল্পভাবে, আপনি এটি করতে পারেন:

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

যা হবে

  1. বিশ্বব্যাপী স্কোপে অবজেক্ট উইন্ডোটি সন্ধান করুন, জাভাস্ক্রিপ্টটি যদি অনুকূলিত হয় তবে এটি জানতে পারবে যেহেতু উইন্ডোটি পরিবর্তন করা হয়নি, এটি ইতিমধ্যে নির্বাচিত বস্তু রয়েছে, তাই কিছুই করার দরকার নেই।
  2. ক্রিয়াকলাপ অবজেক্ট অপারেন্ড স্ট্যাকের উপর চাপ দেওয়া হয়
  3. onloadহ্যাশ টেবিল লকআপ করে কোনও সম্পত্তি কিনা তা যাচাই করুন , যেহেতু এটি ফাংশনের মতো বলা হয়।

সর্বোত্তম ক্ষেত্রে, এটিতে একটি একক হ্যাশ টেবিল লুকানোর জন্য ব্যয় হয়, যা প্রয়োজনীয় কারণ এটি আনতে onloadহবে।

আদর্শভাবে, jQuery তাদের ক্যারিগুলিকে স্ট্রিংগুলিতে সংকলন করবে যা আপনি jQuery যা করতে চান তা করতে পেস্ট করা যেতে পারে তবে jQuery এর রানটাইম প্রেরণ ছাড়াই। এইভাবে আপনার কোনও একটি বিকল্প আছে

  1. আমরা আজকের মতো জ্যাকোরির গতিশীল প্রেরণ করি।
  2. jQuery এর খাঁটি জাভাস্ক্রিপ্ট স্ট্রিংয়ে আপনার ক্যোয়ারী সংকলন করুন যা আপনি যা করতে চান তা প্রমাণ করতে পাস হতে পারে।
  3. 2 এর ফলাফলটি সরাসরি আপনার কোডে অনুলিপি করুন এবং এর ব্যয়টি এড়িয়ে যান eval

0

উইন্ডো.অনলোডটি ডিওএম এপিআই সরবরাহ করে এবং এটিতে "প্রদত্ত উত্স লোড হওয়ার পরে লোড ইভেন্টটি আগুন ধরিয়ে দেয়"।

"নথি লোড প্রক্রিয়া শেষে লোড ঘটনা দাবানল। এই মুহুর্তে, বস্তুর সব নথিতে DOM মধ্যে আছে, এবং সব ছবি, স্ক্রিপ্ট, লিঙ্ক এবং উপ-ফ্রেম সমাপ্ত লোড হবে।" ডোম অনলোড load

তবে jQuery $ (ডকুমেন্ট) এ। এটিতে ইমেজ, স্ক্রিপ্টস, আইফ্রেমেস ইত্যাদির অন্তর্ভুক্ত নেই jquery রেডি ইভেন্ট

সুতরাং jquery প্রস্তুত পদ্ধতি ডোম অনলোড ইভেন্টের চেয়ে আগে চলবে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.