我正在一个网页上进行AJAX调用,该调用返回如下HTML块:
<div> <!-- some html --> <script type="text/javascript"> /** some javascript */ </script> </div>
我正在将整个内容插入DOM,但是没有运行JavaScript。有办法运行吗?
一些细节:我无法控制脚本块中的内容(因此无法将其更改为可以调用的函数),我只需要执行整个块即可。我无法在响应中调用eval,因为JavaScript处于HTML的较大块内。我可以做某种正则表达式来分离JavaScript,然后在其上调用eval,但这真令人讨厌。有人知道更好的方法吗?
通过设置元素的innerHTML属性添加的脚本不会执行。尝试创建一个新的div,设置其innerHTML,然后将此新的div添加到DOM。例如:
<html> <头> <script type ='text / javascript'> 函数addScript() { var str =“ <脚本>警报('我在这里'); <\ /脚本>”; var newdiv = document.createElement('div'); newdiv.innerHTML = str; document.getElementById('target')。appendChild(newdiv); } </ script> </ head> <身体> <input type =“ button” value =“添加脚本” onclick =“ addScript()” /> <div>你好世界</ div> <div id =“ target”> </ div> </ body> </ html>