JavaScript: innerHTML したときに中に含まれる script が実行されない件
JavaScript: innerHTML したときに中に含まれる script が実行されない件
function setInnerHTML (node, text) { node.innerHTML = text; let script = node.querySelectorAll ('script'); if (script.length) { let doc = node.ownerDocument, org = doc.createElement ('script'); for (let s of script) { let new_script = org.cloneNode (false); new_script.textContent = s.textContent; s.parentNode.replaceChild (new_script, s); } org = null; } }
ノードに innerHTML で挿入した後、その中から script ノードを抜き出す。
新しく作ったノードに中身をコピーして、元の script ノードと置き換える