summaryrefslogtreecommitdiff
path: root/public/scripts
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 /public/scripts
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.
Diffstat (limited to 'public/scripts')
-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);
}