From ecde8e7f871795058ce56d7e4cd91d7e4b85c4d2 Mon Sep 17 00:00:00 2001 From: rolux Date: Mon, 25 Apr 2011 12:07:09 +0200 Subject: [PATCH] better Ox.documentReady --- demos/list/index.html | 3 +-- demos/list/js/list.js | 4 ++-- demos/mouse/index.html | 3 +-- demos/mouse/js/mouse.js | 2 +- source/js/Ox.UI/Ox.UI.js | 17 ++++++++++++++--- source/js/Ox.js | 21 ++++++++++++--------- 6 files changed, 31 insertions(+), 19 deletions(-) diff --git a/demos/list/index.html b/demos/list/index.html index 32080562..20076630 100644 --- a/demos/list/index.html +++ b/demos/list/index.html @@ -3,8 +3,7 @@ ox.js list demo - - + diff --git a/demos/list/js/list.js b/demos/list/js/list.js index 47512bd3..f214a816 100644 --- a/demos/list/js/list.js +++ b/demos/list/js/list.js @@ -1,6 +1,6 @@ -Ox.UI(function() { +Ox.load('UI', function() { - Ox.theme('modern'); + Ox.Theme('modern'); var $treeList = new Ox.TreeList({ items: [ diff --git a/demos/mouse/index.html b/demos/mouse/index.html index b6085562..3dfbdaa2 100644 --- a/demos/mouse/index.html +++ b/demos/mouse/index.html @@ -3,8 +3,7 @@ OxJS Mouse Events Demo - - + diff --git a/demos/mouse/js/mouse.js b/demos/mouse/js/mouse.js index 62da972d..a007beb6 100644 --- a/demos/mouse/js/mouse.js +++ b/demos/mouse/js/mouse.js @@ -1,4 +1,4 @@ -Ox.UI(function() { +Ox.load('UI', function() { var $target = Ox.Element() .css({ position: 'absolute', diff --git a/source/js/Ox.UI/Ox.UI.js b/source/js/Ox.UI/Ox.UI.js index 013fe011..30144b65 100644 --- a/source/js/Ox.UI/Ox.UI.js +++ b/source/js/Ox.UI/Ox.UI.js @@ -43,6 +43,8 @@ Ox.load.UI = function(options, callback) { function showScreen() { + console.log('showScreen') + var body = Ox.element('body'), css = { position: 'absolute', @@ -154,10 +156,17 @@ Ox.load.UI = function(options, callback) { Ox.loadFile(Ox.PATH + 'js/jquery/jquery.js', function() { initUI(); $.getJSON(Ox.PATH + 'json/Ox.UI.json', function(files) { - var counter = 0; + var promises = []; files.forEach(function(file) { + var dfd = new $.Deferred(); Ox.loadFile(Ox.PATH + file, function() { - ++counter == files.length && Ox.documentReady(function() { + dfd.resolve(); + }); + promises.push(dfd.promise()) + }); + $.when.apply(null, promises) + .done(function() { + $(function() { var $div; Ox.Theme(options.theme); if (browserSupported && options.showScreen && options.hideScreen) { @@ -171,8 +180,10 @@ Ox.load.UI = function(options, callback) { } callback(browserSupported); }); + }) + .fail(function() { + throw new Error('File not found.') }); - }); }); }); diff --git a/source/js/Ox.js b/source/js/Ox.js index a108687f..6751bab5 100644 --- a/source/js/Ox.js +++ b/source/js/Ox.js @@ -1237,19 +1237,22 @@ Ox.canvas = function() { Ox.documentReady = (function() { var callbacks = []; - document.addEventListener('DOMContentLoaded', ready, false); - function ready() { - document.removeEventListener('DOMContentLoaded', ready, false); - callbacks.forEach(function(callback) { - callback(); - }); - delete callbacks; - } + document.onreadystatechange = function() { + if (document.readyState == 'complete') { + Ox.print('document has become ready', callbacks); + callbacks.forEach(function(callback) { + callback(); + }); + delete callbacks; + } + }; return function(callback) { if (document.readyState == 'complete') { + Ox.print('document is ready') callback(); } else { - callbacks.push(callback); + callbacks.push(callback); + Ox.print('document is not ready', callbacks) } } }());