Skip to content

Instantly share code, notes, and snippets.

@0xlkda
Created July 20, 2020 18:36
Show Gist options
  • Save 0xlkda/2ec7a6ec216889ef3c1252c8bc94f559 to your computer and use it in GitHub Desktop.
Save 0xlkda/2ec7a6ec216889ef3c1252c8bc94f559 to your computer and use it in GitHub Desktop.
function injectJS(id: string, src: string): Promise<string> {
return new Promise<string>((resolve, reject) => {
if (!document) {
resolve();
return;
}
if (document.getElementById(id)) {
resolve('JS already loaded.');
return;
}
const script = document.createElement('script');
script.id = id;
script.async = true;
script.defer = true;
script.src = src;
script.addEventListener('load', () => resolve('JS loaded.'));
script.addEventListener('error', () => reject('Error script.'));
script.addEventListener('abort', () => reject('Aborted.'));
document.head.appendChild(script);
});
}
function injectCSS(id: string, src: string): Promise<string> {
return new Promise<string>((resolve, reject) => {
if (!document) {
resolve();
return;
}
if (document.getElementById(id)) {
resolve('CSS already loaded.');
return;
}
const link = document.createElement('link');
link.id = id;
link.setAttribute('rel', 'stylesheet');
link.setAttribute('href', src);
link.addEventListener('load', () => resolve('CSS loaded.'));
link.addEventListener('error', () => reject('Error css.'));
link.addEventListener('abort', () => reject('CSS aborted.'));
document.head.appendChild(link);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment