return letter.toUpperCase();
},
- // The ready event handler and self cleanup method
- DOMContentLoaded = function() {
- if ( document.addEventListener ) {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- } else if ( document.readyState === "complete" ) {
- // we're here because readyState === "complete" in oldIE
- // which is good enough for us to call the dom ready!
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ // The ready event handler
+ completed = function( event ) {
+
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
jQuery.ready();
}
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
};
jQuery.fn = jQuery.prototype = {
// Standards-based browsers support DOMContentLoaded
} else if ( document.addEventListener ) {
// Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ document.addEventListener( "DOMContentLoaded", completed, false );
// A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
+ 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", DOMContentLoaded );
+ document.attachEvent( "onreadystatechange", completed );
// A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
+ window.attachEvent( "onload", completed );
// If IE and not a frame
// continually check to see if the document is ready
return setTimeout( doScrollCheck, 50 );
}
+ // detach all dom ready events
+ detach();
+
// and execute any waiting functions
jQuery.ready();
}