From 4c1e12e889f2a70bfa3603fed9d1cabe67d294e0 Mon Sep 17 00:00:00 2001 From: John Resig Date: Fri, 19 Dec 2008 04:29:48 +0000 Subject: [PATCH] Simplifying the DOM ready code, no longer attempting to handle stylesheet loading. Closes #2614. --- src/event.js | 54 ++++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 40 deletions(-) diff --git a/src/event.js b/src/event.js index 4bf96fca1f..5be849f561 100644 --- a/src/event.js +++ b/src/event.js @@ -521,27 +521,30 @@ function bindReady(){ if ( readyBound ) return; readyBound = true; - // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event - if ( document.addEventListener && !jQuery.browser.opera) + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { // Use the handy event callback - document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); + document.addEventListener( "DOMContentLoaded", function(){ + document.removeEventListener( "DOMContentLoaded", arguments.callee, false ); + jQuery.ready(); + }, false ); // If IE event model is used - if ( document.attachEvent ) + } else if ( document.attachEvent ) { // ensure firing before onload, // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", function(e) { - if ( document.readyState == "complete" ) { - document.detachEvent("onreadystatechange", arguments.callee ); + document.attachEvent("onreadystatechange", function(){ + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", arguments.callee ); jQuery.ready(); } }); - // If IE and not an iframe - if ( document.documentElement.doScroll && !window.frameElement ) + // If IE and not an iframe // continually check to see if the document is ready - (function(){ - if (jQuery.isReady) return; + if ( document.documentElement.doScroll && !window.frameElement ) (function(){ + if ( jQuery.isReady ) return; + try { // If IE is used, use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ @@ -550,36 +553,7 @@ function bindReady(){ setTimeout( arguments.callee, 0 ); return; } - // and execute any waiting functions - jQuery.ready(); - })(); - if ( jQuery.browser.opera ) - document.addEventListener( "DOMContentLoaded", function () { - if (jQuery.isReady) return; - for (var i = 0; i < document.styleSheets.length; i++) - if (document.styleSheets[i].disabled) { - setTimeout( arguments.callee, 0 ); - return; - } - // and execute any waiting functions - jQuery.ready(); - }, false); - - if ( jQuery.browser.safari ) { - var numStyles; - (function(){ - if (jQuery.isReady) return; - if ( document.readyState != "loaded" && document.readyState != "complete" ) { - setTimeout( arguments.callee, 0 ); - return; - } - if ( numStyles === undefined ) - numStyles = jQuery("style, link[rel=stylesheet]").length; - if ( document.styleSheets.length != numStyles ) { - setTimeout( arguments.callee, 0 ); - return; - } // and execute any waiting functions jQuery.ready(); })();