首页 > 代码库 > Jquery实现ready()的源码

Jquery实现ready()的源码

 1 function bindReady(){      2     if ( readyBound ) return;      3     readyBound = true;      4      5     // Mozilla, Opera and webkit nightlies currently support this event      6     if ( document.addEventListener ) {      7         // Use the handy event callback      8         document.addEventListener( "DOMContentLoaded", function(){      9             document.removeEventListener( "DOMContentLoaded", arguments.callee, false );     10             jQuery.ready();     11         }, false );     12     13     // If IE event model is used     14     } else if ( document.attachEvent ) {     15         // ensure firing before onl oad,     16         // maybe late but safe also for iframes     17         document.attachEvent("onreadystatechange", function(){     18             if ( document.readyState === "complete" ) {     19                 document.detachEvent( "onreadystatechange", arguments.callee );     20                 jQuery.ready();     21             }     22         });     23     24         // If IE and not an iframe     25         // continually check to see if the document is ready     26         if ( document.documentElement.doScroll && typeof window.frameElement === "undefined" ) 27           (function(){     28             if ( jQuery.isReady ) return;     29     30             try {     31                 // If IE is used, use the trick by Diego Perini     32                 // http://javascript.nwbox.com/IEContentLoaded/     33                 document.documentElement.doScroll("left");     34             } catch( error ) {     35                 setTimeout( arguments.callee, 0 );     36                 return;     37             }     38     39             // and execute any waiting functions     40             jQuery.ready();     41         })();     42     }     43     44     // A fallback to window.onload, that will always work     45     jQuery.event.add( window, "load", jQuery.ready );     46 }   

关键:IE or Webkit|Moz 内核判断、DOMContentLoaded事件、onreadystatechange事件、readyState==“complete”