Mercurial > nebulaweb3
view default/node_modules/shoestring/src/core/ready.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line source
//>>excludeStart("exclude", pragmas.exclude); define([ "shoestring" ], function(){ //>>excludeEnd("exclude"); /** * Bind callbacks to be run when the DOM is "ready". * * @param {function} fn The callback to be run * @return shoestring * @this shoestring */ shoestring.ready = function( fn ){ if( ready && fn ){ fn.call( doc ); } else if( fn ){ readyQueue.push( fn ); } else { runReady(); } return [doc]; }; // TODO necessary? shoestring.fn.ready = function( fn ){ shoestring.ready( fn ); return this; }; // Empty and exec the ready queue var ready = false, readyQueue = [], runReady = function(){ if( !ready ){ while( readyQueue.length ){ readyQueue.shift().call( doc ); } ready = true; } }; // If DOM is already ready at exec time, depends on the browser. // From: https://github.com/mobify/mobifyjs/blob/526841be5509e28fc949038021799e4223479f8d/src/capture.js#L128 if (doc.attachEvent ? doc.readyState === "complete" : doc.readyState !== "loading") { runReady(); } else { doc.addEventListener( "DOMContentLoaded", runReady, false ); doc.addEventListener( "readystatechange", runReady, false ); win.addEventListener( "load", runReady, false ); } //>>excludeStart("exclude", pragmas.exclude); }); //>>excludeEnd("exclude");