Skripterstellung mit innerHTML: Eine Problemumgehung für Browser-Ausführungsbeschränkungen
Beim Versuch, Skripte dynamisch in eine Webseite zu laden, können Entwickler das verwenden innerHTML-Eigenschaft von HTML-Elementen wie
Um dieses Problem zu beheben, wurde eine rekursive Methode entwickelt, die nicht ausführbare Skripte effektiv ersetzt mit ausführbaren Gegenstücken. Diese unten beschriebene Methode gewährleistet eine originalgetreue Ausführung beim Einfügen über innerHTML:
function nodeScriptReplace(node) { if (nodeScriptIs(node)) { node.parentNode.replaceChild(nodeScriptClone(node), node); } else { var i = -1, children = node.childNodes; while (++i < children.length) { nodeScriptReplace(children[i]); } } return node; } function nodeScriptClone(node) { var script = document.createElement("script"); script.text = node.innerHTML; var i = -1, attrs = node.attributes, attr; while (++i < attrs.length) { script.setAttribute((attr = attrs[i]).name, attr.value); } return script; } function nodeScriptIs(node) { return node.tagName === 'SCRIPT'; }
Verwendung: Durch Aufrufen der nodeScriptReplace()-Methode für das Body-Element des Dokuments werden alle nicht ausführbaren Skripte durch ihre ersetzt ausführbare Gegenstücke, die eine nahtlose Skriptausführung ermöglichen:
nodeScriptReplace(document.getElementsByTagName("body")[0]);
Diese Technik umgeht effektiv die Einschränkungen des Browsers hinsichtlich der Skriptausführung beim Einfügen über innerHTML und ermöglicht so Entwickler können Skripte nach Bedarf dynamisch laden und ausführen.
Das obige ist der detaillierte Inhalt vonWarum führt innerHTML keine Skripte aus und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!