File: demos/startbootstrap-sb-admin-2/bower_components/holderjs/src/ondomready.js

Recommend this page to a friend!
  Classes of Emmanuel Podvin   Blapy   demos/startbootstrap-sb-admin-2/bower_components/holderjs/src/ondomready.js   Download  
File: demos/startbootstrap-sb-admin-2/bower_components/holderjs/src/ondomready.js
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: Blapy
jQuery plugin to load linked pages using AJAX
Author: By
Last change: Update of demos/startbootstrap-sb-admin-2/bower_components/holderjs/src/ondomready.js
Date: 2 years ago
Size: 5,095 bytes
 

Contents

Class file image Download
/*! * onDomReady.js 1.4.0 (c) 2013 Tubal Martin - MIT license * * Specially modified to work with Holder.js */ ;(function(name, global, callback){ global[name] = callback; })("onDomReady", this, (function(win) { 'use strict'; //Lazy loading fix for Firefox < 3.6 //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html if (document.readyState == null && document.addEventListener) { document.addEventListener("DOMContentLoaded", function DOMContentLoaded() { document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false); document.readyState = "complete"; }, false); document.readyState = "loading"; } var doc = win.document, docElem = doc.documentElement, LOAD = "load", FALSE = false, ONLOAD = "on"+LOAD, COMPLETE = "complete", READYSTATE = "readyState", ATTACHEVENT = "attachEvent", DETACHEVENT = "detachEvent", ADDEVENTLISTENER = "addEventListener", DOMCONTENTLOADED = "DOMContentLoaded", ONREADYSTATECHANGE = "onreadystatechange", REMOVEEVENTLISTENER = "removeEventListener", // W3C Event model w3c = ADDEVENTLISTENER in doc, top = FALSE, // isReady: Is the DOM ready to be used? Set to true once it occurs. isReady = FALSE, // Callbacks pending execution until DOM is ready callbacks = []; // Handle when the DOM is ready function ready( fn ) { if ( !isReady ) { // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). if ( !doc.body ) { return defer( ready ); } // Remember that the DOM is ready isReady = true; // Execute all callbacks while ( fn = callbacks.shift() ) { defer( fn ); } } } // The ready event handler function completed( event ) { // readyState === "complete" is good enough for us to call the dom ready in oldIE if ( w3c || event.type === LOAD || doc[READYSTATE] === COMPLETE ) { detach(); ready(); } } // Clean-up method for dom ready events function detach() { if ( w3c ) { doc[REMOVEEVENTLISTENER]( DOMCONTENTLOADED, completed, FALSE ); win[REMOVEEVENTLISTENER]( LOAD, completed, FALSE ); } else { doc[DETACHEVENT]( ONREADYSTATECHANGE, completed ); win[DETACHEVENT]( ONLOAD, completed ); } } // Defers a function, scheduling it to run after the current call stack has cleared. function defer( fn, wait ) { // Allow 0 to be passed setTimeout( fn, +wait >= 0 ? wait : 1 ); } // Attach the listeners: // Catch cases where onDomReady is called after the browser event has already occurred. // we once tried to use readyState "interactive" here, but it caused issues like the one // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 if ( doc[READYSTATE] === COMPLETE ) { // Handle it asynchronously to allow scripts the opportunity to delay ready defer( ready ); // Standards-based browsers support DOMContentLoaded } else if ( w3c ) { // Use the handy event callback doc[ADDEVENTLISTENER]( DOMCONTENTLOADED, completed, FALSE ); // A fallback to window.onload, that will always work win[ADDEVENTLISTENER]( LOAD, completed, FALSE ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes doc[ATTACHEVENT]( ONREADYSTATECHANGE, completed ); // A fallback to window.onload, that will always work win[ATTACHEVENT]( ONLOAD, completed ); // If IE and not a frame // continually check to see if the document is ready try { top = win.frameElement == null && docElem; } catch(e) {} if ( top && top.doScroll ) { (function doScrollCheck() { if ( !isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll("left"); } catch(e) { return defer( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions ready(); } })(); } } function onDomReady( fn ) { // If DOM is ready, execute the function (async), otherwise wait isReady ? defer( fn ) : callbacks.push( fn ); } // Add version onDomReady.version = "1.4.0"; // Add method to check if DOM is ready onDomReady.isReady = function(){ return isReady; }; return onDomReady; })(this));