util-helpers
Version:
45 lines (44 loc) • 1.7 kB
TypeScript
type ScriptAttribute = Pick<HTMLScriptElement, 'async' | 'crossOrigin' | 'defer' | 'integrity' | 'noModule' | 'referrerPolicy' | 'text' | 'type' | 'onload' | 'onerror' | 'id' | 'className'> & {
attrs: Record<string, string>;
destroyOnError: boolean;
};
interface LoadScript {
(src: string, options?: Partial<ScriptAttribute>): Promise<HTMLScriptElement>;
(options?: Partial<ScriptAttribute & {
src?: string;
}>): Promise<HTMLScriptElement>;
}
/**
* 加载 js 文件。
*
* <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
*
* @alias module:Browser.loadScript
* @since 4.19.0
* @param {string} [src] js 地址。
* @param {Object} [options] script 标签属性。比如 `defer` `onload` `onerror` `id` 等,下面列举部分带有默认值或额外扩展的配置。
* @param {boolean} [options.destroyOnError=true] 如果加载失败或错误,自动删除 dom 中的 script 标签。默认`true`
* @param {Object} [options.attrs] 自定义 script 属性,通过 script.setAttribute 设置。
* @param {boolean} [options.async=true] 异步加载。默认`true`
* @param {string} [options.type='text/javascript'] 类型。默认`text/javascript`
* @return {Promise<HTMLScriptElement>} 异步返回 script 元素。
* @example
*
* loadScript('some.js').then(script=>{
* // do something
* })
*
* loadScript('some.js', { id: 'xxx', async: false, attrs: { foo: 'bar' } }).then(script=>{
* // do something
* })
*
* // 注入 script
* loadScript({
* text: 'console.log("hello world");'
* }).then(script=>{
* // do something
* })
*
*/
declare const loadScript: LoadScript;
export default loadScript;