aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-11-03 23:58:54 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-11-04 23:33:35 +0100
commit6fbb62a2fccebef7f6516359917d1e74d2c84d1c (patch)
tree62d6886f4165f12d1362c5a7c2b6bc1666f52278
parent792f78e3d5c21df5f414660b4b0363f59896bbf5 (diff)
Chargement asynchrone plus robuste
Fonctionne aussi si DOMContentLoaded est déjà consommé avant le chargement de main.js, et permet d'attendre les autres scripts tels jQuery si ceux-ci ne sont pas encore chargés.
-rw-r--r--public/scripts/global_view.js7
-rw-r--r--public/scripts/main.js44
2 files changed, 38 insertions, 13 deletions
diff --git a/public/scripts/global_view.js b/public/scripts/global_view.js
index 8e86fcb21..7c2def775 100644
--- a/public/scripts/global_view.js
+++ b/public/scripts/global_view.js
@@ -52,9 +52,12 @@ function init_global_view() {
init_stream_delegates($("#panel"));
}
-if (document.addEventListener) {
- document.addEventListener('DOMContentLoaded', function () {
+if (document.readyState && document.readyState !== 'loading') {
init_global_view();
init_close_panel();
+} else if (document.addEventListener) {
+ document.addEventListener('DOMContentLoaded', function () {
+ init_global_view();
+ init_close_panel();
}, false);
}
diff --git a/public/scripts/main.js b/public/scripts/main.js
index 19e2905cc..325aa03ca 100644
--- a/public/scripts/main.js
+++ b/public/scripts/main.js
@@ -503,17 +503,39 @@ function init_load_more() {
}
//</endless_mode>
-if (document.addEventListener) { //jQuery not ready yet
+function init_all() {
+ if (!(window.$ && window.shortcut && ((!full_lazyload) || $.fn.lazyload))) {
+ if (window.console) {
+ console.log('Waiting for JS…');
+ }
+ window.setTimeout(init_all, 50); //Wait for all js to be loaded
+ return;
+ }
+ $stream = $('#stream');
+ init_posts();
+ init_column_categories();
+ init_shortcuts();
+ init_stream_delegates($stream);
+ init_nav_entries();
+ init_templates();
+ init_notifications();
+ init_actualize();
+ init_load_more();
+ if (window.console) {
+ console.log('Init done.');
+ }
+}
+
+if (document.readyState && document.readyState !== 'loading') {
+ if (window.console) {
+ console.log('Immediate init…');
+ }
+ init_all();
+} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
- $stream = $('#stream');
- init_posts();
- init_column_categories();
- init_shortcuts();
- init_stream_delegates($stream);
- init_nav_entries();
- init_templates();
- init_notifications();
- init_actualize();
- init_load_more();
+ if (window.console) {
+ console.log('Waiting for DOMContentLoaded…');
+ }
+ init_all();
}, false);
}