Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Transform $.bindReady into $.ready.promise. It is now possible to use…
… $.ready.promise or $.when( $.ready ) to get the ready promise. Costs *1* byte min/gzipped. Unit test added.
- Loading branch information
Showing
3 changed files
with
68 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -251,11 +251,8 @@ jQuery.fn = jQuery.prototype = { | ||
}, | ||
|
||
ready: function( fn ) { | ||
// Attach the listeners | ||
jQuery.bindReady(); | ||
|
||
// Add the callback | ||
readyList.add( fn ); | ||
jQuery.ready.promise().done( fn ); | ||
|
||
return this; | ||
}, | ||
@@ -412,7 +409,7 @@ jQuery.extend({ | ||
} | ||
|
||
// If there are functions bound, to execute | ||
readyList.fireWith( document, [ jQuery ] ); | ||
readyList.resolveWith( document, [ jQuery ] ); | ||
|
||
// Trigger any bound ready events | ||
if ( jQuery.fn.trigger ) { | ||
@@ -421,51 +418,6 @@ jQuery.extend({ | ||
} | ||
}, | ||
|
||
bindReady: function() { | ||
if ( readyList ) { | ||
return; | ||
} | ||
|
||
readyList = jQuery.Callbacks( "once memory" ); | ||
|
||
// Catch cases where $(document).ready() is called after the | ||
// browser event has already occurred. | ||
if ( document.readyState !== "loading" ) { | ||
// Handle it asynchronously to allow scripts the opportunity to delay ready | ||
return setTimeout( jQuery.ready, 1 ); | ||
} | ||
|
||
// Mozilla, Opera and webkit nightlies currently support this event | ||
if ( document.addEventListener ) { | ||
// Use the handy event callback | ||
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); | ||
|
||
// A fallback to window.onload, that will always work | ||
window.addEventListener( "load", jQuery.ready, false ); | ||
|
||
// If IE event model is used | ||
} else if ( document.attachEvent ) { | ||
// ensure firing before onload, | ||
// maybe late but safe also for iframes | ||
document.attachEvent( "onreadystatechange", DOMContentLoaded ); | ||
|
||
// A fallback to window.onload, that will always work | ||
window.attachEvent( "onload", jQuery.ready ); | ||
|
||
// If IE and not a frame | ||
// continually check to see if the document is ready | ||
var toplevel = false; | ||
|
||
try { | ||
toplevel = window.frameElement == null; | ||
} catch(e) {} | ||
|
||
if ( document.documentElement.doScroll && toplevel ) { | ||
doScrollCheck(); | ||
} | ||
} | ||
}, | ||
|
||
// See test/unit/core.js for details concerning isFunction. | ||
// Since version 1.3, DOM methods and functions like alert | ||
// aren't supported. They return false on IE (#2968). | ||
@@ -897,6 +849,50 @@ jQuery.extend({ | ||
browser: {} | ||
}); | ||
|
||
jQuery.ready.promise = function( object ) { | ||
if ( !readyList ) { | ||
|
||
readyList = jQuery.Deferred(); | ||
|
||
// Catch cases where $(document).ready() is called after the | ||
// browser event has already occurred. | ||
if ( document.readyState !== "loading" ) { | ||
// Handle it asynchronously to allow scripts the opportunity to delay ready | ||
setTimeout( jQuery.ready, 1 ); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
// Mozilla, Opera and webkit nightlies currently support this event | ||
} else if ( document.addEventListener ) { | ||
// Use the handy event callback | ||
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); | ||
|
||
// A fallback to window.onload, that will always work | ||
window.addEventListener( "load", jQuery.ready, false ); | ||
|
||
// If IE event model is used | ||
} else if ( document.attachEvent ) { | ||
This comment has been minimized.
Sorry, something went wrong.
rwaldron
Member
|
||
// ensure firing before onload, | ||
// maybe late but safe also for iframes | ||
document.attachEvent( "onreadystatechange", DOMContentLoaded ); | ||
|
||
// A fallback to window.onload, that will always work | ||
window.attachEvent( "onload", jQuery.ready ); | ||
|
||
// If IE and not a frame | ||
// continually check to see if the document is ready | ||
var toplevel = false; | ||
|
||
try { | ||
toplevel = window.frameElement == null; | ||
} catch(e) {} | ||
|
||
if ( document.documentElement.doScroll && toplevel ) { | ||
doScrollCheck(); | ||
} | ||
} | ||
} | ||
return readyList.promise( object ); | ||
}; | ||
|
||
// Populate the class2type map | ||
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { | ||
class2type[ "[object " + name + "]" ] = name.toLowerCase(); | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<!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 #11470</title> | ||
<script type="text/javascript" src="../include_js.php"></script> | ||
<script type="text/javascript"> | ||
jQuery.when( jQuery.ready ).done(function() { | ||
jQuery("body").append("<div>modifying DOM</div>"); | ||
window.parent.iframeCallback( $("div").text() === "modifying DOM" ); | ||
}); | ||
</script> | ||
</head> | ||
<body> | ||
<!-- long loading iframe --> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
return setTimeout here.