diff --git a/shared/static/scripts/sx.js b/shared/static/scripts/sx.js index ef55184..b139d1d 100644 --- a/shared/static/scripts/sx.js +++ b/shared/static/scripts/sx.js @@ -879,6 +879,16 @@ if (typeof val === "string") { var tpl = document.createElement("template"); tpl.innerHTML = val; + // Scripts in innerHTML don't execute — recreate them as live elements + var deadScripts = tpl.content.querySelectorAll("script"); + for (var si = 0; si < deadScripts.length; si++) { + var dead = deadScripts[si]; + var live = document.createElement("script"); + for (var ai = 0; ai < dead.attributes.length; ai++) + live.setAttribute(dead.attributes[ai].name, dead.attributes[ai].value); + live.textContent = dead.textContent; + dead.parentNode.replaceChild(live, dead); + } frag.appendChild(tpl.content); } else if (val && val.nodeType) { // Already a DOM node (e.g. from children fragment)