65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
goog.loadJs('common', () => {
|
|
|
|
goog.require('Mixly.Env');
|
|
goog.provide('Mixly.ScriptLoader');
|
|
|
|
|
|
const { Env, ScriptLoader } = Mixly;
|
|
|
|
/**
|
|
* 加载 script 文件
|
|
* @param src
|
|
*/
|
|
ScriptLoader.loadScript = function (src) {
|
|
let addSign = true;
|
|
let scripts = document.getElementsByTagName('script');
|
|
for (let i = 0; i < scripts.length; i++) {
|
|
if (scripts[i] && scripts[i].src && scripts[i].src.indexOf(src) !== -1) {
|
|
addSign = false;
|
|
}
|
|
}
|
|
if (addSign) {
|
|
let $script = document.createElement('script');
|
|
$script.setAttribute('type', 'text/javascript');
|
|
$script.setAttribute('src', src);
|
|
//$script.setAttribute('async', '');
|
|
document.getElementsByTagName('head').item(0).appendChild($script);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除 script 文件
|
|
* @param src
|
|
*/
|
|
ScriptLoader.removeScript = function (src) {
|
|
let scripts = document.getElementsByTagName('script');
|
|
if (src.indexOf('../') !== -1) {
|
|
src = src.substring(src.lastIndexOf('../') + 3, src.length);
|
|
}
|
|
for (let i = 0; i < scripts.length; i++) {
|
|
if (scripts[i] && scripts[i].src && scripts[i].src.indexOf(src) !== -1) {
|
|
scripts[i].parentNode.removeChild(scripts[i]);
|
|
}
|
|
}
|
|
}
|
|
|
|
ScriptLoader.loadLangJs = function (oldLang, newLang, doFunc) {
|
|
let scripts = document.querySelectorAll('script');
|
|
let newLangPathArr = [];
|
|
for (let i = 0; i < scripts.length; i++) {
|
|
if (scripts[i] && scripts[i].src && scripts[i].src.indexOf(oldLang + '.js') !== -1) {
|
|
let oldLangPath = scripts[i].src;
|
|
let newLangPath = oldLangPath.replace(oldLang + '.js', newLang + '.js');
|
|
scripts[i].parentNode.removeChild(scripts[i]);
|
|
newLangPathArr.push(newLangPath);
|
|
}
|
|
}
|
|
for (let i = 0; i < Env.thirdPartyJS.length; i++) {
|
|
Env.thirdPartyJS[i] = Env.thirdPartyJS[i].replace(oldLang + '.js', newLang + '.js');
|
|
}
|
|
LazyLoad.js(newLangPathArr, function () {
|
|
doFunc();
|
|
});
|
|
}
|
|
|
|
}); |