如何执行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);本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!