diff --git a/src/script-loader.spec.ts b/src/script-loader.spec.ts index 029161d..4c7cfa4 100644 --- a/src/script-loader.spec.ts +++ b/src/script-loader.spec.ts @@ -62,6 +62,14 @@ describe('ScriptLoader', () => { .toEqual(false); }); + it('reload existing script', async () => { + await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js'); + await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js', undefined, true); + + expect(document.body.appendChild) + .toHaveBeenCalledTimes(2); + }); + it('resolves promise if script is loaded', async () => { const output = await loader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js'); diff --git a/src/script-loader.ts b/src/script-loader.ts index ca20c4c..fa56806 100644 --- a/src/script-loader.ts +++ b/src/script-loader.ts @@ -27,8 +27,8 @@ export default class ScriptLoader { private _requestSender: RequestSender ) {} - loadScript(src: string, options?: LoadScriptOptions): Promise { - if (!this._scripts[src]) { + loadScript(src: string, options?: LoadScriptOptions, reloadScript?: boolean): Promise { + if (!this._scripts[src] || !!this._scripts[src] && reloadScript) { this._scripts[src] = new Promise((resolve, reject) => { const script = document.createElement('script') as LegacyHTMLScriptElement; const { async = false, attributes = {} } = options || {};