summaryrefslogtreecommitdiffstats
path: root/geschichte/js/utils/loader.js
diff options
context:
space:
mode:
authorbpeetz <me@b-peetz.de>2023-06-26 07:07:28 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-02-22 16:07:05 +0100
commitc4276f597be72da754cd0595dffee17454556c49 (patch)
treeb6160a73a1c0b752d875fc356f1e06dcdf7503a0 /geschichte/js/utils/loader.js
parentchore: Initial Commit (diff)
downloadb-peetz.de-c4276f597be72da754cd0595dffee17454556c49.zip
feat(geschichte): Add
Diffstat (limited to 'geschichte/js/utils/loader.js')
-rw-r--r--geschichte/js/utils/loader.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/geschichte/js/utils/loader.js b/geschichte/js/utils/loader.js
new file mode 100644
index 0000000..58d39ac
--- /dev/null
+++ b/geschichte/js/utils/loader.js
@@ -0,0 +1,46 @@
+/**
+ * Loads a JavaScript file from the given URL and executes it.
+ *
+ * @param {string} url Address of the .js file to load
+ * @param {function} callback Method to invoke when the script
+ * has loaded and executed
+ */
+export const loadScript = ( url, callback ) => {
+
+ const script = document.createElement( 'script' );
+ script.type = 'text/javascript';
+ script.async = false;
+ script.defer = false;
+ script.src = url;
+
+ if( typeof callback === 'function' ) {
+
+ // Success callback
+ script.onload = script.onreadystatechange = event => {
+ if( event.type === 'load' || /loaded|complete/.test( script.readyState ) ) {
+
+ // Kill event listeners
+ script.onload = script.onreadystatechange = script.onerror = null;
+
+ callback();
+
+ }
+ };
+
+ // Error callback
+ script.onerror = err => {
+
+ // Kill event listeners
+ script.onload = script.onreadystatechange = script.onerror = null;
+
+ callback( new Error( 'Failed loading script: ' + script.src + '\n' + err ) );
+
+ };
+
+ }
+
+ // Append the script at the end of <head>
+ const head = document.querySelector( 'head' );
+ head.insertBefore( script, head.lastChild );
+
+} \ No newline at end of file