topical media & game development

talk show tell print

mobile-query-three-plugins-requirejs-vendor-domReady.js / js



  
@license RequireJS domReady 2.0.1 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. Available via the MIT or new BSD license. see: http://github.com/requirejs/domReady for details

  
  /*jslint */
  /*global require: false, define: false, requirejs: false,
    window: false, clearInterval: false, document: false,
    self: false, setInterval: false */
  
  define(function () {
      'use strict';
  
      var isTop, testDiv, scrollIntervalId,
          isBrowser = typeof window !== "undefined" && window.document,
          isPageLoaded = !isBrowser,
          doc = isBrowser ? document : null,
          readyCalls = [];
  
      function runCallbacks(callbacks) {
          var i;
          for (i = 0; i < callbacks.length; i += 1) {
              callbacks[i](doc);
          }
      }
  
      function callReady() {
          var callbacks = readyCalls;
  
          if (isPageLoaded) {
              //Call the DOM ready callbacks
              if (callbacks.length) {
                  readyCalls = [];
                  runCallbacks(callbacks);
              }
          }
      }
  
      
Sets the page as loaded.

  
      function pageLoaded() {
          if (!isPageLoaded) {
              isPageLoaded = true;
              if (scrollIntervalId) {
                  clearInterval(scrollIntervalId);
              }
  
              callReady();
          }
      }
  
      if (isBrowser) {
          if (document.addEventListener) {
              //Standards. Hooray! Assumption here that if standards based,
              //it knows about DOMContentLoaded.
              document.addEventListener("DOMContentLoaded", pageLoaded, false);
              window.addEventListener("load", pageLoaded, false);
          } else if (window.attachEvent) {
              window.attachEvent("onload", pageLoaded);
  
              testDiv = document.createElement('div');
              try {
                  isTop = window.frameElement === null;
              } catch (e) {}
  
              //DOMContentLoaded approximation that uses a doScroll, as found by
              //Diego Perini: http://javascript.nwbox.com/IEContentLoaded/,
              //but modified by other contributors, including jdalton
              if (testDiv.doScroll && isTop && window.external) {
                  scrollIntervalId = setInterval(function () {
                      try {
                          testDiv.doScroll();
                          pageLoaded();
                      } catch (e) {}
                  }, 30);
              }
          }
  
          //Check if document already complete, and if so, just trigger page load
          //listeners. Latest webkit browsers also use "interactive", and
          //will fire the onDOMContentLoaded before "interactive" but not after
          //entering "interactive" or "complete". More details:
          //http://dev.w3.org/html5/spec/the-end.html#the-end
          //http://stackoverflow.com/questions/3665561/document-readystate-of-interactive-vs-ondomcontentloaded
          //Hmm, this is more complicated on further use, see "firing too early"
          //bug: github.com/requirejs/domReady/issues/1
          //so removing the || document.readyState === "interactive" test.
          //There is still a window.onload binding that should get fired if
          //DOMContentLoaded is missed.
          if (document.readyState === "complete") {
              pageLoaded();
          }
      }
  
      
START OF PUBLIC API *

  
  
      
Registers a callback for DOM ready. If DOM is already ready, the callback is called immediately.
parameter: {Function} callback

  
      function domReady(callback) {
          if (isPageLoaded) {
              callback(doc);
          } else {
              readyCalls.push(callback);
          }
          return domReady;
      }
  
      domReady.version = '2.0.1';
  
      
Loader Plugin API method

  
      domReady.load = function (name, req, onLoad, config) {
          if (config.isBuild) {
              onLoad(null);
          } else {
              domReady(onLoad);
          }
      };
  
      
END OF PUBLIC API *

  
  
      return domReady;
  });
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.