Show More
Commit Description:
merge
Commit Description:
merge
References:
File last commit:
Show/Diff file:
Action:
node_modules/jquery/src/core/ready-no-deferred.js
| 97 lines
| 2.2 KiB
| application/javascript
| JavascriptLexer
|
r789 | define( [ | |||
"../core", | ||||
"../var/document", | ||||
"../var/isFunction" | ||||
], function( jQuery, document, isFunction ) { | ||||
"use strict"; | ||||
var readyCallbacks = [], | ||||
whenReady = function( fn ) { | ||||
readyCallbacks.push( fn ); | ||||
}, | ||||
executeReady = function( fn ) { | ||||
// Prevent errors from freezing future callback execution (gh-1823) | ||||
// Not backwards-compatible as this does not execute sync | ||||
window.setTimeout( function() { | ||||
fn.call( document, jQuery ); | ||||
} ); | ||||
}; | ||||
jQuery.fn.ready = function( fn ) { | ||||
whenReady( fn ); | ||||
return this; | ||||
}; | ||||
jQuery.extend( { | ||||
// Is the DOM ready to be used? Set to true once it occurs. | ||||
isReady: false, | ||||
// A counter to track how many items to wait for before | ||||
// the ready event fires. See #6781 | ||||
readyWait: 1, | ||||
ready: function( wait ) { | ||||
// Abort if there are pending holds or we're already ready | ||||
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { | ||||
return; | ||||
} | ||||
// Remember that the DOM is ready | ||||
jQuery.isReady = true; | ||||
// If a normal DOM Ready event fired, decrement, and wait if need be | ||||
if ( wait !== true && --jQuery.readyWait > 0 ) { | ||||
return; | ||||
} | ||||
whenReady = function( fn ) { | ||||
readyCallbacks.push( fn ); | ||||
while ( readyCallbacks.length ) { | ||||
fn = readyCallbacks.shift(); | ||||
if ( isFunction( fn ) ) { | ||||
executeReady( fn ); | ||||
} | ||||
} | ||||
}; | ||||
whenReady(); | ||||
} | ||||
} ); | ||||
// Make jQuery.ready Promise consumable (gh-1778) | ||||
jQuery.ready.then = jQuery.fn.ready; | ||||
/** | ||||
* The ready event handler and self cleanup method | ||||
*/ | ||||
function completed() { | ||||
document.removeEventListener( "DOMContentLoaded", completed ); | ||||
window.removeEventListener( "load", completed ); | ||||
jQuery.ready(); | ||||
} | ||||
// Catch cases where $(document).ready() is called | ||||
// after the browser event has already occurred. | ||||
// Support: IE9-10 only | ||||
// Older IE sometimes signals "interactive" too soon | ||||
if ( document.readyState === "complete" || | ||||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { | ||||
// Handle it asynchronously to allow scripts the opportunity to delay ready | ||||
window.setTimeout( jQuery.ready ); | ||||
} else { | ||||
// Use the handy event callback | ||||
document.addEventListener( "DOMContentLoaded", completed ); | ||||
// A fallback to window.onload, that will always work | ||||
window.addEventListener( "load", completed ); | ||||
} | ||||
} ); | ||||