UNPKG

simple-load-script

Version:

Very simple promise based script and JSONP

162 lines (119 loc) 3.67 kB
# simple-load-script > Very simple promise based script loader and JSONP [![.github/workflows/check.yml](https://github.com/tomek-f/simple-load-script/actions/workflows/check.yml/badge.svg)](https://github.com/tomek-f/simple-load-script/actions/workflows/check.yml) ## Usage ### Async/await ```js import simpleLoadScript from 'simple-load-script'; try { const scriptRef = await simpleLoadScript( 'https://code.jquery.com/jquery-3.7.1.min.js', ); console.log(scriptRef); // HTMLScriptElement } catch (err) { console.log(err); } ``` ### Promise ```js import simpleLoadScript from 'simple-load-script'; simpleLoadScript('https://code.jquery.com/jquery-3.7.1.min.js') .then(function (scriptRef) { console.log(scriptRef); // HTMLScriptElement }) .catch(function (err) { console.log(err); }); ``` ### Config object ```js import simpleLoadScript from 'simple-load-script'; try { const scriptRef = await simpleLoadScript({ url: 'https://code.jquery.com/jquery-3.7.1.min.js', inBody: true, attrs: { id: 'one', charset: 'UTF-8' }, }); console.log(scriptRef); // HTMLScriptElement inBody with attrs present } catch (err) { console.log(err); } ``` ### Google Maps API Runs global callback (window.gmapiready) ```js import simpleLoadScript from 'simple-load-script'; try { const scriptRef = await simpleLoadScript( '//maps.googleapis.com/maps/api/js?&callback=gmapiready', ); console.log(scriptRef); // HTMLScriptElement } catch (err) { console.log(err); } ``` ### JSONP Runs global callback (window.elo) ```js var simpleLoadScript = require('simple-load-script'); try { const scriptRef = await simpleLoadScript({ url: '//api.ipinfodb.com/v3/ip-city/?format=json&callback=elo', removeScript: true, }); console.log(scriptRef); // undefined } catch (err) { console.log(err); } ``` ### Array mode - objects and urls, callBackNames must have unique names ```js import simpleLoadScript from 'simple-load-script'; try { const scriptRefs = await simpleLoadScript([ '//maps.googleapis.com/maps/api/js?&callback=gmapiready', { url: '//api.ipinfodb.com/v3/ip-city/?format=json&callback=elo', removeScript: true, }, 'https://code.jquery.com/jquery-3.7.1.min.js', ]); console.log(scriptRefs); // HTMLScriptElement[] } catch (err) { console.log(err); } ``` ## Arguments `Config | string | (Config | string)[]` ## Config ### Interface ```ts interface Config { url: string; attrs?: Record<string, string>; inBody?: boolean; insertInto?: string | null; removeScript?: boolean; } ``` ### Default values ```js const defaultConfig = { url: '', attrs: {}, inBody: false, insertInto: null, removeScript: false, }; ``` - `url` - file to append to body - `attrs` - with attributes to append to script tag (`charset`, `type`, `id`, &hellip;) - `inBody` - append to `document.body` instead of `document.head` - `insertInto` - [CSS selector (an ID, class name, element name, etc.)](https://developer.mozilla.org/en/docs/Web/API/Document/querySelector) to insert the script into. Overrides `inBody` value. - `removeScript` - remove script tag after load; it's always removed on an error ## Specific import [Check files](https://www.npmjs.com/package/simple-load-script?activeTab=code) or package.json ## Changelog [View on github](https://github.com/tomek-f/simple-load-script/blob/master/changelog.md). ## Misc. - uses addEventListener, Array.isArray, for…of, destructuring Promise & Promise.all