simple-load-script
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

simple-load-script

Very simple promise based script loader and JSONP

Usage

Async/await

import simpleLoadScript from 'simple-load-script';

try {
  const scriptRef = await simpleLoadScript('//code.jquery.com/jquery-2.2.3.js');

  console.log(scriptRef); // HTMLScriptElement
} catch (err) {
  console.log(err);
}

Promise

import simpleLoadScript from 'simple-load-script';

simpleLoadScript('//code.jquery.com/jquery-2.2.3.js')
  .then(function (scriptRef) {
    console.log(scriptRef);
  })
  .catch(function (err) {
    console.log(err);
  });

Config object

import simpleLoadScript from 'simple-load-script';

try {
  const scriptRef = await simpleLoadScript({
    url: '//code.jquery.com/jquery-2.2.3.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)

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)

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

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,
    },
    '//code.jquery.com/jquery-2.2.3.js',
  ]);

  console.log(scriptRefs); // HTMLScriptElement[]
} catch (err) {
  console.log(err);
}

Arguments

Config | string | (Config | string)[]

Config

Interface

interface Config {
  url: string;
  attrs?: Record<string, string>;
  inBody?: boolean;
  insertInto?: string | null;
  removeScript?: boolean;
}

Default values

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, …)
  • inBody - append to document.body instead of document.head
  • insertInto - CSS selector (an ID, class name, element name, etc.) 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 or package.json

Changelog

View on github.

Misc.

  • uses addEventListener, Array.isArray, for…of, destructuring Promise & Promise.all

Readme

Keywords

Package Sidebar

Install

npm i simple-load-script

Weekly Downloads

4,283

Version

2.0.0

License

MIT

Unpacked Size

12.7 kB

Total Files

9

Last publish

Collaborators

  • tomekf