0
|
1 //>>excludeStart("exclude", pragmas.exclude);
|
|
2 define([ "shoestring" ], function(){
|
|
3 //>>excludeEnd("exclude");
|
|
4
|
|
5 /**
|
|
6 * Bind callbacks to be run when the DOM is "ready".
|
|
7 *
|
|
8 * @param {function} fn The callback to be run
|
|
9 * @return shoestring
|
|
10 * @this shoestring
|
|
11 */
|
|
12 shoestring.ready = function( fn ){
|
|
13 if( ready && fn ){
|
|
14 fn.call( doc );
|
|
15 }
|
|
16 else if( fn ){
|
|
17 readyQueue.push( fn );
|
|
18 }
|
|
19 else {
|
|
20 runReady();
|
|
21 }
|
|
22
|
|
23 return [doc];
|
|
24 };
|
|
25
|
|
26 // TODO necessary?
|
|
27 shoestring.fn.ready = function( fn ){
|
|
28 shoestring.ready( fn );
|
|
29 return this;
|
|
30 };
|
|
31
|
|
32 // Empty and exec the ready queue
|
|
33 var ready = false,
|
|
34 readyQueue = [],
|
|
35 runReady = function(){
|
|
36 if( !ready ){
|
|
37 while( readyQueue.length ){
|
|
38 readyQueue.shift().call( doc );
|
|
39 }
|
|
40 ready = true;
|
|
41 }
|
|
42 };
|
|
43
|
|
44 // If DOM is already ready at exec time, depends on the browser.
|
|
45 // From: https://github.com/mobify/mobifyjs/blob/526841be5509e28fc949038021799e4223479f8d/src/capture.js#L128
|
|
46 if (doc.attachEvent ? doc.readyState === "complete" : doc.readyState !== "loading") {
|
|
47 runReady();
|
|
48 } else {
|
|
49 doc.addEventListener( "DOMContentLoaded", runReady, false );
|
|
50 doc.addEventListener( "readystatechange", runReady, false );
|
|
51 win.addEventListener( "load", runReady, false );
|
|
52 }
|
|
53
|
|
54 //>>excludeStart("exclude", pragmas.exclude);
|
|
55 });
|
|
56 //>>excludeEnd("exclude");
|