如何执行innerHtml中的script代码?
有时候我们会有把一整段 html 动态塞进页面的需求,例如渲染了一个模板,从服务器端获取了一段广告代码等。一般情况下我们使用 container.innerHTML 即可。但是通过innerHTML向文档中插入的script代码是不会自动执行的,这个时候就需要我们通过代码来手动执行。网上常规的实现方式:
1,使用jquery中的.html()方法。
2,使用eval()来执行。
这篇文章使用其他方式来实现。代码如下:
html:
<div id="dom"></div>js:
let runScript = (html,dom) => {
let _con = document.createElement("div");
_con.innerHTML = html;
[..._con.querySelectorAll("script")].forEach(el => {
let _script = document.createElement("script");
_script.innerHTML = el.innerHTML;
dom.appendChild(_script);
});
}
//使用
let html ='<div>内容</div><script id="w2898_10469">(function () {console.log("测试")})();<\/script>'
let dom = document.getElementById('dom');
dom.innerHTML=html;
runScript(html,dom);本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!