superrfjs
Version:
83 lines (78 loc) • 2.4 kB
JavaScript
const scripts = [
"rf.sheets.all.js",
"rf.shapes.js",
"rf.charts.js",
"rf.slicers.js",
"rf.print.js",
"rf.barcode.js",
"rf.pdf.js",
"rf.pivottables.js",
"rf.tablesheet.js",
"rf.ganttsheet.js",
"rf.formulapanel.js",
"rf.reportsheet.js",
"rf.io.js",
"rf.excelio.js",
"rf.cn.js",
"rf.zh.js",
"rf.designer.all.js",
];
//所有需要加载的css资源
const cssFiles = [
"rf.designer.css",
"rf.2013.css",
];
export let initGC = (document) => {
return new Promise((resolve, reject) => {
let flag = true;
let meta = document.getElementsByTagName('meta');
for (let index = 0; index < meta.length; index++) {
const element = meta[index];
if (element.name == 'loadEnd') {
flag = false;
}
}
if (flag) {
// 定义一个异步函数,它接受两个参数:一个资源列表和一个加载器函数
const loadResourcesInOrder = async (resources, loader) => {
for (const resource of resources) {
// 确保资源按照列表中的顺序依次加载
await loader(resource, document);
}
};
const loadScript = (script, document) => {
return new Promise((resolve, reject) => {
const s = document.createElement("script");
s.src = `./${script}`;
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
});
};
const loadCSS = (cssFile, document) => {
return new Promise((resolve, reject) => {
const link = document.createElement("link");
link.rel = "stylesheet";
link.href = `./${cssFile}`;
link.onload = resolve;
link.onerror = reject;
document.head.appendChild(link);
});
};
loadResourcesInOrder(cssFiles, loadCSS);
//动态引入js
loadResourcesInOrder(scripts, loadScript)
.then(() => {
const meta = document.createElement("meta");
meta.name = 'loadEnd';
document.head.appendChild(meta)
resolve("所有js脚本已加载完成");
})
.catch((error) => {
reject("加载脚本时出错", error);
});
} else {
resolve("脚本已加载过!!!");
}
})
};