mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-27 01:14:07 +01:00
❤️ 完整开源界面和内核 https://github.com/siyuan-note/siyuan/issues/5013
This commit is contained in:
parent
e650b8100c
commit
f40ed985e1
1214 changed files with 345766 additions and 9 deletions
40
app/src/protyle/util/addScript.ts
Normal file
40
app/src/protyle/util/addScript.ts
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
export const addScriptSync = (path: string, id: string) => {
|
||||
if (document.getElementById(id)) {
|
||||
return false;
|
||||
}
|
||||
const xhrObj = new XMLHttpRequest();
|
||||
xhrObj.open("GET", path, false);
|
||||
xhrObj.setRequestHeader("Accept",
|
||||
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01");
|
||||
xhrObj.send("");
|
||||
const scriptElement = document.createElement("script");
|
||||
scriptElement.type = "text/javascript";
|
||||
scriptElement.text = xhrObj.responseText;
|
||||
scriptElement.id = id;
|
||||
document.head.appendChild(scriptElement);
|
||||
};
|
||||
|
||||
export const addScript = (path: string, id: string) => {
|
||||
return new Promise((resolve) => {
|
||||
if (document.getElementById(id)) {
|
||||
// 脚本加载后再次调用直接返回
|
||||
resolve(false);
|
||||
return false;
|
||||
}
|
||||
const scriptElement = document.createElement("script");
|
||||
scriptElement.src = path;
|
||||
scriptElement.async = true;
|
||||
// 循环调用时 Chrome 不会重复请求 js
|
||||
document.head.appendChild(scriptElement);
|
||||
scriptElement.onload = () => {
|
||||
if (document.getElementById(id)) {
|
||||
// 循环调用需清除 DOM 中的 script 标签
|
||||
scriptElement.remove();
|
||||
resolve(false);
|
||||
return false;
|
||||
}
|
||||
scriptElement.id = id;
|
||||
resolve(true);
|
||||
};
|
||||
});
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue