1
0
Переглянути джерело

Merge pull request #455 from herby/forked-initialization

forked initialization, optically faster load (dom-ready happens sooner)
Nicolas Petton 12 роки тому
батько
коміт
4af9c07949
1 змінених файлів з 24 додано та 5 видалено
  1. 24 5
      js/init.js

+ 24 - 5
js/init.js

@@ -1,7 +1,26 @@
-smalltalk.initialize();
+(function () {
+    var inBrowser = typeof amber !== "undefined" && typeof amber.load === "function";
+    function init() {
+        smalltalk.initialize();
 
-/* Similar to jQuery(document).ready() */
+        /* Similar to jQuery(document).ready() */
 
-if(this.amber && this.amber.smalltalkReady) {
-	this.amber.smalltalkReady();
-}
+        if (inBrowser && amber.smalltalkReady) {
+            amber.smalltalkReady();
+        }
+    }
+
+    if (inBrowser) {
+        // init is lengthy process done in JavaScript.
+        // setTimeout here postpones it, so DOM ready
+        // event can occur sooner, thus load process
+        // may appear optically faster.
+        setTimeout(init, 0);
+    } else {
+        // In certain configurations, setTimeout is not feasible.
+        // It is mainly for `amberc`-produced concatenated
+        // node.js programs. There, the actual "main" appears
+        // immediately after init, so it must happens synchronously.
+        init();
+    }
+})();