Here’s a very simple helping function that can be used to manage arbitary dependencies in your script.
The dependency check is defined with a callback so you can write dependencies for when DOM is loaded, a script is ready or anything else you’d need.
Features:
- Define your own dependency checks – generic and reusable code snippet
- Simply pass in the callback you want to execute when the dependency is ready
- User-defined interval for checking dependency
- Max tries functionality to prevent infinite loops
Usage:
// Let's say you want to do something when the DOM is ready
var callback = function() {
$( "#container" ).append( "<p>Succesfully loaded DOM.</p>" );
}
doIfDOMisReady( callback );
// Or with the generic function do:
doIfReady( function() { return jQuery.isReady; }, callback, 150, 10 )
//=====================================
// Do something when an external API is ready
var callback = function() {
alert( 'API ready' );
}
doIfReady( function() { return window._gaq !== undefined; }, callback, 150, 10 )
Source code for helping function(s):
function doIfReady(checkCallback, readyCallback, interval, maxTries) {
interval = interval || 150;
maxTries = maxTries === undefined || maxTries === null ? 8 : maxTries;
if ( checkCallback() ) {
readyCallback();
} else {
if ( maxTries ) {
setTimeout( function() {
doIfReady( checkCallback, readyCallback, interval, maxTries-1 );
}, interval );
}
}
}
function doIfDOMisReady(callback) {
// PS! $.isReady is an undocumentet property in jQuery, use with caution
doIfReady( function() { return jQuery.isReady; }, callback, 150, 10 )
}