aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-08-02 00:30:11 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-08-02 00:30:11 +0200
commit75d2fa3fd325f98a98304e7b1e1bdb56bf0f2af7 (patch)
treef0a1e8db398726b49493aecb2a0ba3dcff2917e2
parentb382f266de0369352344324f88bc5d3dc136119d (diff)
JS load optimization
Start loading what we can already before DOM is ready
-rw-r--r--p/scripts/main.js49
1 files changed, 34 insertions, 15 deletions
diff --git a/p/scripts/main.js b/p/scripts/main.js
index c6e108ca1..69d0e33da 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -1294,27 +1294,46 @@ function parseJsonVars() {
window.icons = json.icons;
}
-function init_all() {
+function init_beforeDOM() {
if (!window.$) {
if (window.console) {
- console.log('FreshRSS waiting for JS…');
+ console.log('FreshRSS waiting for jQuery…');
}
- window.setTimeout(init_all, 50);
+ window.setTimeout(init_beforeDOM, 50);
return;
}
- parseJsonVars();
- init_notifications();
init_confirm_action();
+ if (['normal', 'reader', 'global'].indexOf(context['current_view']) >= 0) {
+ $stream = $('#stream');
+ if ($stream.length < 1) {
+ if (window.console) {
+ console.log('FreshRSS waiting for content…');
+ }
+ window.setTimeout(init_beforeDOM, 50);
+ return;
+ }
+ init_column_categories();
+ init_stream($stream);
+ init_shortcuts();
+ init_actualize();
+ faviconNbUnread();
+ }
+}
+
+function init_afterDOM() {
+ if (!window.$) {
+ if (window.console) {
+ console.log('FreshRSS waiting again for jQuery…');
+ }
+ window.setTimeout(init_afterDOM, 50);
+ return;
+ }
+ init_notifications();
$stream = $('#stream');
if ($stream.length > 0) {
- init_actualize();
- init_column_categories();
init_load_more($stream);
init_posts();
- init_stream($stream);
init_nav_entries();
- init_shortcuts();
- faviconNbUnread();
init_print_action();
init_notifs_html5();
window.setInterval(refreshUnreads, 120000);
@@ -1335,16 +1354,16 @@ function init_all() {
}
}
+parseJsonVars();
+init_beforeDOM(); //Can be called before DOM is fully loaded
+
if (document.readyState && document.readyState !== 'loading') {
- if (window.console) {
- console.log('FreshRSS immediate init…');
- }
- init_all();
+ init_afterDOM();
} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function () {
if (window.console) {
console.log('FreshRSS waiting for DOMContentLoaded…');
}
- init_all();
+ init_afterDOM();
}, false);
}