1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * @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)
- }
|