UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

45 lines (44 loc) 1.7 kB
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;