/* * @Author: Rindy * @Date: 2021-04-26 14:18:55 * @LastEditors: Rindy * @LastEditTime: 2021-09-13 12:28:00 * @Description: 注释 */ var lastWindowErrorUrl var lastWindowError var baseOrigin = location.origin var currentScript = (document.currentScript || {}).src /** * 获取当前脚本路径 */ export var getScriptURL = (function () { if (!currentScript) { var a = {} try { a.b() } catch (e) { var stack = e.stack || e.sourceURL || e.stacktrace var match = /(?:http|https|file):\/\/.*?\/.+?.js/.exec(stack) if (match) { currentScript = match[0] } } } var filepathPart = currentScript.split('/') filepathPart.pop() currentScript = filepathPart.join('/') + '/' return function () { return currentScript } })() window.addEventListener('error', function (evt) { lastWindowErrorUrl = evt.filename lastWindowError = evt.error }) function createScript(url) { var script = document.createElement('script') script.async = true // Only add cross origin for actual cross origin // this is because Safari triggers for all // - https://bugs.webkit.org/show_bug.cgi?id=171566 if (url.indexOf(baseOrigin + '/')) { script.crossOrigin = 'anonymous' } script.src = url return script } export function loadScript(url, name, version) { return new Promise((resolve, reject) => { var script = createScript(url + (version ? `?v=${version}` : '')) script.addEventListener('error', function () { console.error('load:' + url + ' error') reject() }) script.addEventListener('load', function () { document.head.removeChild(script) resolve(name) }) document.head.appendChild(script) }) } export function usePlugin(name, version) { return loadScript(getScriptURL() + 'plugins/' + name + '.js', name, version) }