diff options
| author | 2013-11-03 23:58:54 +0100 | |
|---|---|---|
| committer | 2013-11-04 23:33:35 +0100 | |
| commit | 6fbb62a2fccebef7f6516359917d1e74d2c84d1c (patch) | |
| tree | 62d6886f4165f12d1362c5a7c2b6bc1666f52278 /public/scripts | |
| parent | 792f78e3d5c21df5f414660b4b0363f59896bbf5 (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.js | 7 | ||||
| -rw-r--r-- | public/scripts/main.js | 44 |
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); } |
