如何执行动态加载的 JavaScript 块? [英] How do you execute a dynamically loaded JavaScript block?
本文介绍了如何执行动态加载的 JavaScript 块?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理一个网页,我正在其中进行 AJAX 调用,该调用返回一大块 HTML,例如:
<!-- 一些 html --><script type="text/javascript">/** 一些 JavaScript */
我将整个内容插入到 DOM 中,但 JavaScript 并未运行.有没有办法运行它?
一些细节:我无法控制脚本块中的内容(因此我无法将其更改为可以调用的函数),我只需要执行整个块即可.我无法对响应调用 eval,因为 JavaScript 位于更大的 HTML 块中.我可以做某种正则表达式来分离 JavaScript,然后对它调用 eval,但这很糟糕.有人知道更好的方法吗?
解决方案
通过设置元素的 innerHTML 属性添加的脚本不会被执行.尝试创建一个新 div,设置其 innerHTML,然后将这个新 div 添加到 DOM.例如:
<前><头><script type='text/javascript'>函数 addScript(){var str = "<script>alert('我在这里');</script>";var newdiv = document.createElement('div');newdiv.innerHTML = str;document.getElementById('target').appendChild(newdiv);}头部><身体><输入类型=按钮"值=添加脚本"onclick="addScript()"/><div>你好世界</div><div id=目标"></div>