readyList,
// The ready event handler
- DOMContentLoaded,
+ // Cleanup function for the document ready method
+ DOMContentLoaded = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ } else if ( document.readyState !== "loading" ) {
+ // if document.addEventListener isn't present, we assume detachEvent is!
+ // Make sure body exists by checking readystate, at least, in case IE gets a little overzealous (ticket #5443).
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ },
// Save a reference to some core methods
toString = Object.prototype.toString,
// the ready event fires. See #6781
readyWait: 1,
- // should we fire ready on readyState "interactive" ?
- quickReady: true,
-
// Hold (or release) the ready event
holdReady: function( hold ) {
if ( hold ) {
// Handle when the DOM is ready
ready: function( wait ) {
- // user wasn't necessarily given the chance to set jQuery.quickReady before bindReady
- // so we check here for quickReady instead
- if ( !jQuery.quickReady && document.readyState === "interactive" ) {
- return;
- }
// Either a released hold or an DOMready/load event and not yet ready
if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
// browser event has already occurred.
if ( document.readyState !== "loading" ) {
// Handle it asynchronously to allow scripts the opportunity to delay ready
- setTimeout( jQuery.ready, 1 );
+ return setTimeout( jQuery.ready, 1 );
}
// Mozilla, Opera and webkit nightlies currently support this event
// All jQuery objects should point back to these
rootjQuery = jQuery(document);
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- jQuery.quickReady = true;
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" || ( jQuery.quickReady && document.readyState === "interactive" ) ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if ( jQuery.isReady ) {
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<title>Test case for jQuery ticket #10067</title>
-<script type="text/javascript">
-
-// ready should fire callback after the iframe fires the callback
-setTimeout(function () {
- el = document.createElement('script');
- el.type = 'text/javascript';
- el.onload = function () {
- jQuery.quickReady = false;
- jQuery(document).ready(function () {
- // unfortunately, Opera 11.6 and lower has a bug where
- // document.readyState is "complete" before all subresources
- // are loaded, so we need this check here for tests to pass
- if ( document.readyState !== "complete" ) {
- window.parent.iframeCallback(false);
- }
- });
- }
- document.getElementsByTagName('head')[0].appendChild(el);
- el.src = "../include_js.php";
-}, 1000);
-</script>
-</head>
-<body>
-<!-- long loading iframe -->
-<iframe src="longLoad.php?sleep=3&return=true" style="width: 1px; height: 1px"></iframe>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<title>Test case for jQuery ticket #10067</title>
-<script type="text/javascript">
-// browsers that implement the non-standard event API will load the iframe
-// before loading up jQuery, so quickReady has no effect here
-if( document.attachEvent ){
- window.parent.iframeCallback(true);
-} else {
- setTimeout(function () {
- el = document.createElement('script');
- el.type = 'text/javascript';
- el.onload = function () {
- jQuery(document).ready(function () {
- window.parent.iframeCallback(true);
- });
- }
- document.getElementsByTagName('head')[0].appendChild(el);
- el.src = "../include_js.php";
- }, 1000);
-}
-</script>
-</head>
-<body>
-<!-- long loading iframe -->
-<iframe src="longLoad.php?sleep=30&return=false" style="width: 1px; height: 1px"></iframe>
-</body>
-</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>Test case for jQuery ticket #10067</title>
+<script type="text/javascript">
+if ( document.attachEvent ) {
+ // browsers that use the non-standard event API will load the iframe
+ // before jQuery, so there's no way to fire ready before the iframe loads
+ window.parent.iframeCallback( true );
+} else {
+ setTimeout(function() {
+ el = document.createElement("script");
+ el.type = "text/javascript";
+ el.onload = function() {
+ jQuery( document ).ready(function() {
+ window.parent.iframeCallback( true );
+ });
+ }
+ document.getElementsByTagName("head")[ 0 ].appendChild( el );
+ el.src = "../include_js.php";
+ }, 1000 );
+}
+</script>
+</head>
+<body>
+<!-- long loading iframe -->
+<iframe src="longLoad.php?sleep=15&return=false" style="width: 1px; height: 1px"></iframe>
+</body>
+</html>
\ No newline at end of file
</head>
<body>
<script type="text/javascript">
-jQuery(document).ready(function () {
- window.parent.iframeCallback(true);
+jQuery( document ).ready(function () {
+ window.parent.iframeCallback( true );
});
</script>
<!-- long loading iframe -->
jQuery.event.fixHooks.click = saved;
});
-testIframeWithCallback( "jQuery.ready sync load", "event/syncReady", function( isOk ) {
- expect(1);
- ok( isOk, "jQuery loaded synchronously fires ready before all sub-resources are loaded" );
-});
// async loaded tests expect jQuery to be loaded as a single file
// if we're not doing PHP concat, then we fall back to document.write
// which breaks order of execution on async loaded files
+// also need PHP to make the incepted IFRAME hang
if ( hasPHP ) {
- testIframeWithCallback( "jQuery.ready async load with quickReady true", "event/asyncQuickReadyTrue", function( isOk ) {
+ testIframeWithCallback( "jQuery.ready synchronous load with long loading iframe", "event/syncReady", function( isOk ) {
expect(1);
- ok( isOk, "jQuery loaded asynchronously with quickReady true fires ready before all sub-resources are loaded" );
+ ok( isOk, "jQuery loaded synchronously fires ready before all sub-resources are loaded" );
});
- testIframeWithCallback( "jQuery.ready async load with quickReady false", "event/asyncQuickReadyFalse", function( isOk ) {
+ testIframeWithCallback( "jQuery.ready asynchronous load with long loading iframe", "event/asyncReady", function( isOk ) {
expect(1);
- ok( isOk, "jQuery loaded asynchronously with quickReady false fires ready after all sub-resources are loaded" );
+ ok( isOk, "jQuery loaded asynchronously fires ready before all sub-resources are loaded" );
});
}