window.onload vs $ (ලේඛනය). සූදානම් ()


1254

JavaScript window.onloadසහ jQuery $(document).ready()ක්‍රමවේදය අතර ඇති වෙනස්කම් මොනවාද?



මෙහි බොහෝ පිළිතුරු යල් පැන ගිය ඒවා ය. JQuery දැනට ක්‍රියාත්මක කරන ආකාරය විටින් $().ready()විට එය ගිනි window.onloadගනී.
ෂිකෙඩියෙල්

Answers:


1249

මෙම readyවන අතර HTML ලේඛන, පටවා ඇත පසු සිදුවුවහොත් onloadසියළු අන්තර්ගතය (උදා: පින්තූර) ද පටවා ඇත විට අවස්ථාවට පසුව සිදුවේ.

මෙම onloadසිදුවීම DOM හි සම්මත සිදුවීමක් වන අතර readyසිද්ධිය jQuery සඳහා විශේෂිත වේ. readyසිද්ධියේ පරමාර්ථය වන්නේ ලේඛනය පූරණය කිරීමෙන් පසු එය හැකි ඉක්මනින් සිදුවිය යුතු අතර එමඟින් පිටුවේ ඇති මූලද්‍රව්‍යයන්ට ක්‍රියාකාරීත්වය එක් කරන කේතය සියලු අන්තර්ගතයන් පූරණය වන තෙක් බලා සිටිය යුතු නොවේ.


153
@baptx: ඔබ වැරදියි. මෙම readyඅවස්ථාවට වේ jQuery විශේෂිත. එය DOMContentLoadedබ්‍රව්සරයේ තිබේ නම් එය සිදුවීම භාවිතා කරයි , එසේ නොමැති නම් එය අනුකරණය කරයි. DOMContentLoadedසියලුම බ්‍රව්සර්වල සිදුවීමට සහය නොදක්වන නිසා DOM හි නිශ්චිත සමානකමක් නොමැත .
ගුෆා

18
හරි, නමුත් එකම ප්‍රති result ලය DOMContentLoaded සමඟ පවතී, සමහර විට ඔබ මෙය නියම කර තිබිය යුතුය
baptx

55
@baptx: එය ප්‍රශ්නයට අදාළ යැයි මම නොසිතුවෙමි, මම තවමත් එසේ නොකරමි.
ගුෆා

18
පහත වැටීම ඇයි? ඔබ වැරදියි කියා සිතන දේ කුමක්දැයි ඔබ පැහැදිලි නොකරන්නේ නම්, එයට පිළිතුර වැඩි දියුණු කළ නොහැක.
ගුෆා

4
එවැනි සිදුවීමක් නොමැත onload. සිදුවීම අවුලුවන onloadවිට ආයාචනා කළ යුතු ශ්‍රිතයක් ගබඩා කරන වස්තු දේපලක නමකි load.
ස්කොට් මාකස්

140

window.onloadජාවාස්ක්‍රිප්ට් ඉසව්වකි, නමුත් එය ක්‍රියාත්මක කිරීමේදී බ්‍රව්සර් (ෆයර්ෆොක්ස්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 8, සහ ඔපෙරා ) හරහා සියුම් විචක්ෂණත්වයක් ඇති බැවින් , jQuery සපයන අතර ඒවා වියුක්ත කර පිටුවේ DOM සූදානම් වූ වහාම වෙඩි තබයි. (රූප ආදිය සඳහා රැඳී නොසිටින්න).document.ready

$(document).ready(එය බව, සටහනක් නොවේ document.ready නිර්වචනය නොකළ වන,) ඒ jQuery කාර්යය, ඔතන සහ ලබා ඇත , ස්ථාවර පහත සඳහන් සිදුවීම්:

  • document.ondomcontentready/ document.ondomcontentloaded- ලේඛනයේ DOM පටවන විට වෙඩි තබන නව සිදුවීමක් ( පින්තූර ආදිය පැටවීමට ටික කලකට පෙර විය හැක ); නැවතත්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සහ ලෝකයේ සෙසු රටවල තරමක් වෙනස් ය
  • සහ window.onload(එය පැරණි බ්‍රව්සර්වල පවා ක්‍රියාත්මක වේ), එය මුළු පිටුව පටවන විට (රූප, මෝස්තර, ආදිය) වෙඩි තබයි.

17
මෙහි සුළු වැරදි වැටහීමක් ඇත: loadසිදුවීම windowබ්‍රව්සර් හරහා සාධාරණ ලෙස ක්‍රියාත්මක වේ. JQuery සහ අනෙකුත් පුස්තකාල විසඳීමට උත්සාහ කරන ගැටළුව වන්නේ ඔබ සඳහන් කළ දෙයයි, එනම් loadරූප සහ ස්ටයිල් ෂීට් වැනි සියලු යැපෙන සම්පත් පටවන තුරු මෙම අවස්ථාව ඉවත් නොකෙරේ, එය DOM සම්පූර්ණයෙන්ම පටවා බොහෝ කාලයක් ගතවනු ඇත, විදැහුම්කරණය සහ අන්තර්ක්‍රියා සඳහා සූදානම්. බොහෝ පරිගණක වල ගිනි විශ්ලේෂණයට DOM සූදානම් වන විට කැඳවා ඇති බව මෙම අවස්ථාවට DOMContentLoadedනොව DOMContentReady.
ටිම් ඩවුන්

2
Im පහළට යන්න: මෙහි ප්‍රධාන වචනය සාධාරණයි ; onload(FF / IE / Opera යන වෙනස්කම් ඇතත්) අවම වශයෙන් සමහර වස්තු මංකොල්ලකෑම අවශ්‍ය වේ. සම්බන්ධයෙන් ගත් කල DOMContentLoaded, ඔබ සම්පූර්ණයෙන්ම නිවැරදි ය. පැහැදිලි කිරීම සඳහා සංස්කරණය කිරීම.
පිස්ක්වෝර්

ඔබ අදහස් කරන්නේ කුමන ආකාරයේ වස්තුවක් ද?
ටිම් ඩවුන්

1
Im ටිම් ඩවුන්: ඔපෙරා සතුව ඇති බව මම දනිමි , නමුත් එය මත සිදුවීම් ප්‍රේරකය තරමක් විචක්ෂණශීලී විය (විශ්වසනීයව අවුලුවාලීමට document.onloadභාවිතා කළ හැකි විය). Window.onload යන තාක් දුරට: window.onload = fn1;window.onload=fn2;- fn2 පමණක් පමණක් පැටවීම සිදු වේ. සමහර නිදහස් වෙබ් හොස්ට් ඔවුන්ගේම කේත ලේඛනවලට ඇතුළු කරන අතර සමහර විට මෙය පිටුවේ කේතය ආවරණය කරයි.
පිස්ක්වෝර් ගොඩනැගිල්ලෙන් පිටව ගියේ

1
"Document.ready" ලිවීම වැරදියි නොවේද? ලේඛන වස්තුවට සූදානම් ක්‍රමයක් නොමැත, jQuery වස්තුව එය කරන්නේ document (ලේඛනය) ඇමතුමෙන් ය. මෙය හරිම අවුල් සහගත බැවින් මම නිවැරදි නම් කරුණාකර මෙම පිළිතුර සංස්කරණය කරන්න.
ඒ. සලායි

87

$(document).ready()jQuery සිදුවීමකි. $(document).ready()DOM සූදානම් වූ වහාම JQuery හි ක්‍රමය කැඳවනු ලැබේ (එයින් අදහස් වන්නේ බ්‍රව්සරය 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).ready()ශ්‍රිතයකට වඩා තිබිය හැකි අතර , අපට තිබිය හැක්කේ එක් onloadශ්‍රිතයක් පමණි .


4
සුළු කරුණ: IE පිළිබඳ සාකච්ඡාව දුර්වල වචන වලින් යුක්ත වේ. ලේඛනයේ සුදානම් ස්ථානය සම්පූර්ණ වන තුරු IE (8 සහ ඊට පෙර) "ආරක්ෂිතව වෙඩි තැබිය නොහැක" යන්න නොවේ , එනම් IE හි DOMContentLoaded සිදුවීමක් නොමැති වීමයි. "ආරක්ෂාව" පිළිබඳ කාරණයක් නොව, IE හි නැතිවූ අංගයක්, IE 9 හි එකතු කර ඇත.
මෙවලම් සාදන්නා ස්ටීව්

ඔබ නිවැරදියි, එබැවින් ඔබගේ අදහස පිළිබිඹු කිරීම සඳහා මම පිළිතුර සංස්කරණය කළෙමි.
ජේම්ස් ඩ්‍රින්කාර්ඩ්

ඔබ පවසන්නේ "පින්තූර පැටවීම සඳහා එය බලා නොසිටිනු ඇත." අනෙක් ලිපිගොනු ගැන කුමක් කිව හැකිද? බොහෝ විට වෙනත් ගොනුවකින් ශ්‍රිතය ඇමතීමට පෙර - එය පටවා ඇත්දැයි දැන ගැනීමට මට අවශ්‍යය.
ඩාරියස් වී

මෙය මුළුමනින්ම තවත් මාතෘකාවකි, නමුත් ඔබ ඉල්ලන්නේ කුමක්දැයි මට වැටහෙන්නේ නම්, එය පදනම් වන්නේ ඔබ ජේඑස් ගොනු ස්ථානගත කරන්නේ කුමන අනුපිළිවෙලද යන්න ඇතුළුව ඔබේ පිටුව සැකසෙන ආකාරය මතය. මෙන්න වඩාත් විස්තරාත්මකව සබැඳියක් : ablogaboutcode.com/2011/06/14/… එච්ටීඑච් , ජේම්ස්
ජේම්ස් ඩ්‍රින්කාර්ඩ්

යමෙකුට $ (ලේඛනය) භාවිතා කිරීමට අවශ්‍ය වන්නේ ඇයි? සූදානම් () කිහිප වතාවක් භාවිතා කිරීමට?
උස්මාන්

44

වින්ඩෝස් බර අවස්ථාවට ගිනි ඔබේ පිටුවේ සියලු ම අන්තර්ගත සම්පූර්ණයෙන්ම විශ්ලේෂණයට DOM (ලියවිල්ල වස්තුව ආකෘතිය) අන්තර්ගතය සහ ඇතුළු පැටවීමේදී අසමමිතික JavaScript , රාමු සහ රූප . ඔබට body onload = ද භාවිතා කළ හැකිය. දෙකම එක හා සමානයි; window.onload = function(){}සහ <body onload="func();">එකම සිදුවීම භාවිතා කිරීමේ විවිධ ක්‍රම වේ.

jQuery$document.ready ශ්‍රිත සිදුවීම ඊට වඩා මඳක් කලින් ක්‍රියාත්මක වන අතර window.onloadඑය DOM (ලේඛන වස්තු ආකෘතිය) ඔබේ පිටුවට පටවා ගත් පසු හැඳින්වේ. රූප, රාමු සම්පූර්ණයෙන් පැටවීම සඳහා එය බලා නොසිටිනු ඇත .

ඊළඟ ලිපියෙන් ගත් විට: වෙනස් වන්නේ කෙසේද $document.ready()?window.onload()


මම හිතන්නේ මෙය හොඳම පිළිතුරයි!
Haoyu Chen

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()සිදුවීම තුළ ඇති ඕනෑම කේතයක් DOM වස්තු ගැන සඳහන් කරන්නේ නම් , එම වස්තූන් සොයා ගැනීමට නොහැකි විභවයක් පවතින අතර ජාවාස්ක්‍රිප්ට් දෝෂ ඇතිවිය හැකිය. එක්කෝ එම වස්තූන් වෙත ඔබගේ යොමු කිරීම් ආරක්ෂා කරන්න, නැතහොත් එම වස්තු කවුළුව වෙත යොමු කරන කේතය කල් දමන්න.

වෙනත් බ්‍රව්සර්වල (විශේෂයෙන් ක්‍රෝම් සහ ෆයර්ෆොක්ස්) මෙම ගැටලුව ප්‍රතිනිෂ්පාදනය කිරීමට මට නොහැකි විය.


IE හි කුමන අනුවාදයද? ගැළපුම ගැන සැලකිලිමත් විය යුතු බව මම දනිමි, නමුත් IE සමඟ එය දුෂ්කර ය. JavaScript සඳහා 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()කිරීම වඩා හොඳය.


3
ඇසූ ප්‍රශ්නයට මෙය පිළිතුරු සපයන්නේ නැත.

17

සිද්ධීන්

$(document).on('ready', handler)jQuery වෙතින් සූදානම් සිදුවීමට බැඳී ඇත. DOM පටවන විට හසුරුවන්නා හැඳින්වේ . රූප වැනි වත්කම් තවමත් අතුරුදහන් . බන්ධනය කරන අවස්ථාවේ දී ලේඛනය සූදානම් නම් එය කිසි විටෙකත් කැඳවනු නොලැබේ. jQuery ඒ සඳහා DOMContentLoaded -Event භාවිතා කරයි , එය නොමැති නම් එය අනුකරණය කරයි.

$(document).on('load', handler)සියලු සම්පත් සේවාදායකයෙන් පූරණය වූ පසු ඉවත් කරනු ලබන සිදුවීමකි . පින්තූර දැන් පටවා ඇත. අතර පැල්ටපෝමයක් අමු HTML සිදුවීමකි, සූදානම් jQuery විසින් ඉදිකර ඇත.

කාර්යයන්

$(document).ready(handler)ඇත්ත වශයෙන්ම පොරොන්දුවක් . ඇමතුම ලබා දෙන අවස්ථාවේදී ලේඛනය සූදානම් නම් හසුරුවන්නා වහාම කැඳවනු ලැබේ. එසේ නොමැති නම් එය ready-එවන්ට් සමඟ බැඳී ඇත .

JQuery 1.8 ට පෙර , $(document).load(handler)අන්වර්ථයක් ලෙස පැවතුනි $(document).on('load',handler).

තවදුරටත් කියවීම


කරුණාකර ඔබට පැහැදිලි කළ හැකිද document (ලේඛනය). පැටවීම (හසුරුවන්නා) හැසිරවීමේ සිදුවීමට බන්ධනය වන ආකාරයටම ක්‍රියා කරයි. F .fn.ready මෙන් නොව, එය වහාම ඇමතිය නොහැකිද?
නබීල් ඛාන්

මම හිතන්නේ ඔබ එයින් ව්‍යාකූල වී $.fn.loadඇති අතර එය තවදුරටත් සිදුවීම් බන්ධනය ලෙස හැසිරෙන්නේ නැත. ඇත්ත වශයෙන්ම, එය jquery 1.8 සිට යල්පැන ඇත. මම ඒ අනුව එය යාවත්කාලීන කළෙමි
abstraktor

17

මෙම $(document).ready()යනු jQuery සුරකීම ලේඛනයක් සම්පූර්ණයෙන්ම අතර, පටවා ඇත විට සිදුවන, අවස්ථාවට 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;
};

මේ දෙකම සඳහා ඉක්මන් යොමු කිරීමක් ලෙස මම පහත රූපය නිර්මාණය කර ඇත්තෙමි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න


13

window.onload: සාමාන්‍ය ජාවාස්ක්‍රිප්ට් සිදුවීමක්.

document.ready: සම්පූර්ණ HTML පටවා ඇති විට නිශ්චිත jQuery සිදුවීමක්.


11

මතක තබා ගත යුතු එක් දෙයක් නම් (හෝ මා සිහිපත් කළ යුතු යැයි කිවහොත්) ඔබට හැකි තරම් ඒවා ගොඩගැසීමට onloadනොහැකි readyවීමයි. වෙනත් වචන වලින් කිවහොත්, jQuery මැජික් readyඑකම පිටුවක බහු s වලට ඉඩ දෙයි , නමුත් ඔබට එය කළ නොහැක 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.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");
});

6

Document.ready සිදුවීම සිදුවන්නේ 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.readyHTML සහ HTML ගොනුවට ඇතුළත් කර ඇති සියලුම ජාවාස්ක්‍රිප්ට් කේතය, CSS සහ රූප සම්පූර්ණයෙන්ම පටවන විට එය ක්‍රියාත්මක වේ. document.readyඅවශ්‍යතා අනුව කිහිප වතාවක් ලිවිය හැකිය.


window on-Зеленько නිරූපණය කරන්නේ එය දේපලක් මිස ශ්‍රිතයක් නොවන නිසා "window.onload යනු ශ්‍රිතයක්" වැරදිය. විස්තර: developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/... .ready ෙහයින්ද, () ශ්රිතයක් යනු හා හැසිරවීම අපේක්ෂා කරයි.
vik

1

ඔබ කියන විට $(document).ready(f), ඔබ පහත සඳහන් දේ කිරීමට ස්ක්‍රිප්ට් එන්ජිමට කියයි:

  1. වස්තු ලේඛනය ලබා ගෙන එය තල්ලු කරන්න, එය දේශීය විෂය පථයේ නොමැති බැවින්, ලේඛනය තිබෙන්නේ කොහේදැයි සොයා ගැනීමට එය හැෂ් වගු සෙවීමක් කළ යුතුය, වාසනාවකට මෙන් ලේඛනය ගෝලීයව බැඳී ඇති බැවින් එය තනි සොයා බැලීමකි.
  2. වස්තුව සොයාගෙන $එය තෝරන්න, එය දේශීය විෂය පථයට අයත් නොවන බැවින්, එය හැෂ් වගු සෙවීමක් කළ යුතු අතර එය ගැටීම් ඇති විය හැකිය.
  3. ගෝලීය විෂය පථයේ f වස්තුව සොයා ගන්න, එය තවත් හැෂ් වගු සෙවීමකි, නැතහොත් ක්‍රියාකාරී වස්තුව තල්ලු කර එය ආරම්භ කරන්න.
  4. readyතෝරාගත් වස්තුව ඇමතීම , එමඟින් ක්‍රමවේදය සොයා ගැනීමට සහ එය ක්‍රියාත්මක කිරීමට තෝරාගත් වස්තුවට තවත් හැෂ් වගු සෙවීමක් ඇතුළත් වේ.
  5. ඉවරයි.

හොඳම දෙය නම්, මෙය හැෂ් වගු බැලීම් 2 ක් වන නමුත් එය jQuery විසින් සිදු කරන ලද අධික වැඩ නොසලකා හැරීමකි, jQuery වෙත $කළ හැකි සියලු යෙදවුම්වල මුළුතැන්ගෙයි බේසම කොතැනද , එබැවින් නිවැරදි හසුරුවන්නා සඳහා විමසුම යැවීමට තවත් සිතියමක් තිබේ.

විකල්පයක් ලෙස, ඔබට මෙය කළ හැකිය:

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

කැමති

  1. ගෝලීය විෂය පථය තුළ වස්තු කවුළුව සොයා ගන්න, ජාවාස්ක්‍රිප්ට් ප්‍රශස්තිකරණය කර ඇත්නම්, කවුළුව වෙනස් නොවන බැවින්, එය දැනටමත් තෝරාගත් වස්තුවක් ඇති බව දැන ගනු ඇත, එබැවින් කිසිවක් කළ යුතු නැත.
  2. ක්‍රියාකාරී වස්තුව ඔපෙරන්ඩ් තොගය මතට තල්ලු වේ.
  3. onloadහැෂ් මේසයක් බැලීමෙන් දේපලක් තිබේද නැද්ද යන්න පරීක්ෂා කරන්න , මන්ද එය ශ්‍රිතයක් ලෙස හැඳින්වේ.

හොඳම අවස්ථාවෙහිදී, මේ සඳහා තනි හැෂ් වගුවක් බැලීමට වැය වන අතර එය ලබා onloadගත යුතුය.

ඉතා මැනවින්, jQuery විසින් ඔවුන්ගේ විමසුම් සම්පාදනය කරනුයේ ඔබට jQuery කිරීමට අවශ්‍ය දේ කිරීමට ඇලවිය හැකි නමුත් ධාවන කාලය jQuery යැවීමකින් තොරව ය. මේ ආකාරයෙන් ඔබට විකල්පයක් ඇත

  1. අද අපි කරන ආකාරයට jquery ගතිකව යැවීම කරන්න.
  2. ඔබට අවශ්‍ය දේ කිරීමට එවාල් වෙත යැවිය හැකි පිරිසිදු ජාවාස්ක්‍රිප්ට් නූලකට ඔබේ විමසුම සම්පාදනය කරන්න.
  3. 2 හි ප්‍රති result ලය කෙලින්ම ඔබේ කේතයට පිටපත් කර පිරිවැය මඟ හරින්න eval.

0

window.onload සපයනු ලබන්නේ DOM api විසින් වන අතර එය පවසන්නේ “දී ඇති සම්පතක් පටවා ඇති විට පැටවීමේ සිදුවීම ගිනි ගනී” යන්නයි.

"ලේඛන පැටවීමේ ක්‍රියාවලිය අවසානයේදී පැටවීමේ සිදුවීම ගිනි ගනී. මෙම අවස්ථාවෙහිදී, ලේඛනයේ ඇති සියලුම වස්තූන් DOM හි ඇත. සියලුම රූප, ස්ක්‍රිප්ට්, සබැඳි සහ උප රාමු පැටවීම අවසන් කර ඇත." DOM onload

නමුත් jQuery $ (ලේඛනය) තුළ. සූදානම් () ක්‍රියාත්මක වන්නේ ජාවාස්ක්‍රිප්ට් කේතය ක්‍රියාත්මක කිරීමට ලේඛන වස්තු ආකෘතිය (DOM) සූදානම් වූ පසු පමණි. පින්තූර, ස්ක්‍රිප්ට්, අයිෆ්‍රේම් ආදිය මෙයට ඇතුළත් නොවේ. Jquery සූදානම් සිදුවීම

එබැවින් jquery සූදානම් කිරීමේ ක්‍රමය ඩොම් ඔන්ලෝඩ් ඉසව්වට වඩා කලින් ක්‍රියාත්මක වේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.