内容目录
背景
在html单页面想动态加载html,但设置interHtml发现默认<script></script>不能执行,然后google了一下
interheml 设置的内容会当成普通文本,不会执行里面的Js
解决方案
我们设置的动态设置的元素,可以动态创建script 替换原来的script就可以触发执行
代码
function createNewElementFromOld(elm, tag){
Array.from(elm.querySelectorAll(tag)).forEach( oldEle => {
const newScript = document.createElement(tag);
Array.from(oldEle.attributes)
.forEach( attr => newScript.setAttribute(attr.name, attr.value) );
newScript.appendChild(document.createTextNode(oldEle.innerHTML));
oldEle.parentNode.replaceChild(newScript, oldEle);
});
}
var setInnerHTML = function(elm, html) {
elm.innerHTML = html;
createNewElementFromOld(elm, "script");
}