@solid-primitives/script-loader

Primitive to load scripts dynamically

Usage no npm install needed!

<script type="module">
  import solidPrimitivesScriptLoader from 'https://cdn.skypack.dev/@solid-primitives/script-loader';
</script>

README

@solid-primitives/script-loader

lerna size size stage

Creates a primitive to load scripts dynamically, either for external services or jsonp requests

Installation

npm install @solid-primitives/script-loader
# or
yarn add @solid-primitives/script-loader

How to use it

const [script: HTMLScriptElement, remove: () => void] = createScriptLoader({
  src: string | Accessor<string>, // url or js source
  type?: string,
  onload?: () => void,
  onerror?: () => void
});

// For example, to use recaptcha:
createScriptLoader({
  src: 'https://www.google.com/recaptcha/enterprise.js?render=my_token'
  onload: async () => {
    await grecaptcha.enterprise.ready();
    const token = await grecaptcha.enterprise.execute('my_token', {action: 'login'});
    // do your stuff...
  }
});

// or pinterest embeds:
const pinterestEmbedScript = '!function(a,b,c){var d,e,f;d="PIN_"+~~((new Date).getTime()/864e5),...';
createScriptLoader({
  src: pinterestEmbedScript,
  onload: () => window?.PinUtils?.build()
});

Demo

TODO

Changelog

Expand Changelog

0.0.100

Initial release.

1.0.2

Release first first with CJS support.

1.0.3

Upgrade to Solid 1.3

1.0.4

Support JS source inclusion.