动态加载 js
const loadScript = (opt = {}) => {
const defaultOpt = {
url: "",
charset: "utf-8",
complete: () => {},
fail: () => {},
...opt,
};
if (!defaultOpt.url) {
throw new Error("url is a must");
}
const script = document.createElement("script");
const head = document.head;
const success = () => {
script.onerror = null;
script.onload = null;
if (typeof defaultOpt.complete === "function") {
defaultOpt.complete();
}
};
const error = function () {
if (typeof defaultOpt.fail === "function") {
defaultOpt.fail();
}
script.remove();
};
script.onload = success;
script.onerror = error;
script.onreadystatechange = function () {
if (script.readyState === "complete") {
success();
}
};
script.charset = defaultOpt.charset;
script.url = defaultOpt.url;
script.type = "text/javascript";
head.appendChild(script);
};