1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*!
- * docReady v1.0.4
- * Cross browser DOMContentLoaded event emitter
- * MIT license
- */
- /*jshint browser: true, strict: true, undef: true, unused: true*/
- /*global define: false, require: false, module: false */
- ( function( window ) {
- 'use strict';
- var document = window.document;
- // collection of functions to be triggered on ready
- var queue = [];
- function docReady( fn ) {
- // throw out non-functions
- if ( typeof fn !== 'function' ) {
- return;
- }
- if ( docReady.isReady ) {
- // ready now, hit it
- fn();
- } else {
- // queue function when ready
- queue.push( fn );
- }
- }
- docReady.isReady = false;
- // triggered on various doc ready events
- function onReady( event ) {
- // bail if already triggered or IE8 document is not ready just yet
- var isIE8NotReady = event.type === 'readystatechange' && document.readyState !== 'complete';
- if ( docReady.isReady || isIE8NotReady ) {
- return;
- }
- trigger();
- }
- function trigger() {
- docReady.isReady = true;
- // process queue
- for ( var i=0, len = queue.length; i < len; i++ ) {
- var fn = queue[i];
- fn();
- }
- }
- function defineDocReady( eventie ) {
- // trigger ready if page is ready
- if ( document.readyState === 'complete' ) {
- trigger();
- } else {
- // listen for events
- eventie.bind( document, 'DOMContentLoaded', onReady );
- eventie.bind( document, 'readystatechange', onReady );
- eventie.bind( window, 'load', onReady );
- }
- return docReady;
- }
- // transport
- if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( [ 'eventie/eventie' ], defineDocReady );
- } else if ( typeof exports === 'object' ) {
- module.exports = defineDocReady( require('eventie') );
- } else {
- // browser global
- window.docReady = defineDocReady( window.eventie );
- }
- })( window );
|