From dca55a16431591b3e8615320e7b78ee3e0e747b7 Mon Sep 17 00:00:00 2001 From: discomrade Date: Fri, 9 Jul 2021 07:35:09 -0200 Subject: [PATCH] Allow select defering additional JS --- inc/config.php | 7 ++++ inc/instance-config.php | 74 ++++++++++++++++++++++------------------- templates/header.html | 7 +++- 3 files changed, 52 insertions(+), 36 deletions(-) diff --git a/inc/config.php b/inc/config.php index 34a72ce4..dd607039 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1048,6 +1048,13 @@ // $config['additional_javascript'][] = 'js/auto-reload.js'; // $config['additional_javascript'][] = 'js/post-hover.js'; // $config['additional_javascript'][] = 'js/style-select.js'; + + // Defer some additional Javascript for faster initial page load times. Defering may break some scripts. + // To enable, replace the $config['additional_javascript'] array with $config['additional_javascript_init'] + // and $config['additional_javascript_defer'] arrays, then merge them to with array_merge() to generate + // the $config['additional_javascript'] array. This is incompatible with additional_javascript_compile. + // Remember to add the two scripts above into ['additional_javascript_init']! + $config['deferred_javascript'] = false; // Where these script files are located on the web. Defaults to $config['root']. // $config['additional_javascript_url'] = 'http://static.example.org/tinyboard-javascript-stuff/'; diff --git a/inc/instance-config.php b/inc/instance-config.php index a5b18a43..1efa1707 100644 --- a/inc/instance-config.php +++ b/inc/instance-config.php @@ -363,41 +363,45 @@ $config['default_stylesheet'] = array('Dark Red', $config['stylesheets']['Dark R * ==================== */ -$config['additional_javascript'][] = 'js/jquery-ui.custom.min.js'; -$config['additional_javascript'][] = 'js/ajax.js'; - -$config['additional_javascript'][] = 'js/options.js'; -$config['additional_javascript'][] = 'js/strftime.min.js'; -$config['additional_javascript'][] = 'js/local-time.js'; -$config['additional_javascript'][] = 'js/auto-reload.js'; -$config['additional_javascript'][] = 'js/auto-scroll.js'; -$config['additional_javascript'][] = 'js/thread-stats.js'; -$config['additional_javascript'][] = 'js/post-hover.js'; -$config['additional_javascript'][] = 'js/image-hover.js'; -$config['additional_javascript'][] = 'js/style-select.js'; -$config['additional_javascript'][] = 'js/flag-preview.js'; - -$config['additional_javascript'][] = 'js/hide-threads.js'; -$config['additional_javascript'][] = 'js/hide-images.js'; -$config['additional_javascript'][] = 'js/show-backlinks.js'; -$config['additional_javascript'][] = 'js/show-op.js'; -$config['additional_javascript'][] = 'js/show-own-posts.js'; - -$config['additional_javascript'][] = 'js/quick-reply.js'; -$config['additional_javascript'][] = 'js/post-menu.js'; -$config['additional_javascript'][] = 'js/post-filter.js'; - -$config['additional_javascript'][] = 'js/options/general.js'; -$config['additional_javascript'][] = 'js/options/user-css.js'; -$config['additional_javascript'][] = 'js/options/user-js.js'; -$config['additional_javascript'][] = 'js/thread-watcher.js'; -$config['additional_javascript'][] = 'js/catalog-search.js'; -$config['additional_javascript'][] = 'js/gallery-view.js'; -$config['additional_javascript'][] = 'js/expand.js'; -$config['additional_javascript'][] = 'js/file-selector.js'; -$config['additional_javascript'][] = 'js/save-user_flag.js'; -$config['additional_javascript'][] = 'js/webm-settings.js'; -$config['additional_javascript'][] = 'js/expand-video.js'; +$config['deferred_javascript'] = true; +$config['additional_javascript_init'][] = 'js/jquery.min.js'; +$config['additional_javascript_init'][] = 'js/inline-expanding.js'; +$config['additional_javascript_init'][] = 'js/ajax.js'; + +$config['additional_javascript_init'][] = 'js/post-menu.js'; +$config['additional_javascript_init'][] = 'js/hide-images.js'; +$config['additional_javascript_init'][] = 'js/show-backlinks.js'; +$config['additional_javascript_init'][] = 'js/show-op.js'; +$config['additional_javascript_init'][] = 'js/show-own-posts.js'; +$config['additional_javascript_init'][] = 'js/post-filter.js'; + +$config['additional_javascript_init'][] = 'js/strftime.min.js'; +$config['additional_javascript_init'][] = 'js/local-time.js'; +$config['additional_javascript_init'][] = 'js/save-user_flag.js'; +$config['additional_javascript_init'][] = 'js/auto-scroll.js'; +$config['additional_javascript_init'][] = 'js/options.js'; +$config['additional_javascript_init'][] = 'js/options/general.js'; +$config['additional_javascript_init'][] = 'js/options/user-css.js'; +$config['additional_javascript_init'][] = 'js/options/user-js.js'; +$config['additional_javascript_init'][] = 'js/style-select.js'; +$config['additional_javascript_init'][] = 'js/flag-preview.js'; +$config['additional_javascript_init'][] = 'js/file-selector.js'; +$config['additional_javascript_init'][] = 'js/post-hover.js'; +$config['additional_javascript_defer'][] = 'js/auto-reload.js'; +$config['additional_javascript_defer'][] = 'js/thread-stats.js'; +$config['additional_javascript_defer'][] = 'js/image-hover.js'; + +$config['additional_javascript_init'][] = 'js/jquery-ui.custom.min.js'; +$config['additional_javascript_init'][] = 'js/quick-reply.js'; + +$config['additional_javascript_init'][] = 'js/gallery-view.js'; +$config['additional_javascript_init'][] = 'js/catalog-search.js'; +$config['additional_javascript_defer'][] = 'js/thread-watcher.js'; +$config['additional_javascript_defer'][] = 'js/expand.js'; +$config['additional_javascript_defer'][] = 'js/webm-settings.js'; +$config['additional_javascript_defer'][] = 'js/expand-video.js'; + +$config['additional_javascript'] = array_merge($config['additional_javascript_init'], $config['additional_javascript_defer']); $config['flag_preview'] = true; diff --git a/templates/header.html b/templates/header.html index d4ef94e0..fb0d79ed 100644 --- a/templates/header.html +++ b/templates/header.html @@ -17,7 +17,12 @@ {% if not nojavascript %} {% if not config.additional_javascript_compile %} - {% for javascript in config.additional_javascript %}{% endfor %} + {% if not config.deferred_javascript %} + {% for javascript in config.additional_javascript %}{% endfor %} + {% else %} + {% for javascript in config.additional_javascript_init %}{% endfor %} + {% for javascript in config.additional_javascript_defer %}{% endfor %} + {% endif %} {% endif %} {% endif %} {% if config.recaptcha %}