mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[IMP] utils: add loadJS function
Very useful to lazy load libraries in owl applications
This commit is contained in:
+24
-1
@@ -164,4 +164,27 @@ export async function loadTemplates(url: string): Promise<string> {
|
|||||||
let templates = await result.text();
|
let templates = await result.text();
|
||||||
templates = templates.replace(/<!--[\s\S]*?-->/g, "");
|
templates = templates.replace(/<!--[\s\S]*?-->/g, "");
|
||||||
return templates;
|
return templates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const loadedScripts: { [key: string]: Promise<void> } = {};
|
||||||
|
|
||||||
|
export function loadJS(url: string): Promise<void> {
|
||||||
|
if (url in loadedScripts) {
|
||||||
|
return loadedScripts[url];
|
||||||
|
}
|
||||||
|
const promise: Promise<void> = new Promise(function(resolve, reject) {
|
||||||
|
const script = document.createElement("script");
|
||||||
|
script.type = "text/javascript";
|
||||||
|
script.src = url;
|
||||||
|
script.onload = function() {
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
script.onerror = function() {
|
||||||
|
reject(`Error loading file '${url}'`);
|
||||||
|
};
|
||||||
|
const head = document.head || document.getElementsByTagName("head")[0];
|
||||||
|
head.appendChild(script);
|
||||||
|
});
|
||||||
|
loadedScripts[url] = promise;
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user