Files
upage-git/app/utils/execute-scripts.ts
2025-09-24 17:02:44 +08:00

34 lines
979 B
TypeScript

export const executeScripts = (element: Element) => {
if (!element) {
return;
}
const scripts = element.getElementsByTagName('script');
const scriptArray = Array.from(scripts);
for (let i = 0; i < scriptArray.length; i++) {
const oldScript = scriptArray[i];
executeScript(oldScript);
}
};
export const executeScript = (scriptElement: HTMLScriptElement) => {
const newScript = document.createElement('script');
Array.from(scriptElement.attributes).forEach((attr) => {
newScript.setAttribute(attr.name, attr.value);
});
if (scriptElement.src) {
newScript.src = scriptElement.src;
} else {
if (scriptElement.textContent?.trim()?.startsWith('(function() {')) {
newScript.textContent = scriptElement.textContent;
} else {
newScript.textContent = `(function() { ${scriptElement.textContent} })();`;
}
}
if (scriptElement.parentNode) {
scriptElement.parentNode.replaceChild(newScript, scriptElement);
}
};