从AJAX获取HTML并将其插入页面时,我发现任何脚本元素似乎都没有运行。可以看出,通过innerHTML插入的任何脚本都不会执行。


在这样的脚本中调用函数会返回





ReferenceError:x未定义


我尝试了各种尝试运行这些脚本元素的方法,但没有一个实际成功运行。我发现最接近的是:


这会读取每个插入的脚本标记并在其上运行eval(),它实际上运行任何普通的javascript代码但是解析的函数做了不会变得持久,不能在以后调用。


Edit1:
更好的例子



<!DOCTYPE html>
< html&gt ;&#的xD;
< HEAD>&#的xD;
 < meta charset =“utf-8”>
< script>
 function fixInsertedHtml(eScript){
 var codes = eScript.getElementsByTagName(“script”);
 for(var i = 0; i< codes.length; i ++){
的eval(代码[I]的.text);&#的xD;
 
 
< / script>
< / head>
< body>
< div id =“div1”> div1< / div>

< script>
 var insertHTML =“Inserted HTML \
< script> \
 alert('in inserted script'); \
 test(1) ; \
功能测试(val){console.log('test'+ val);} \
 test(2); \
&#xA ;< \ /脚本>“中;&#的xD;
 div1.innerHTML = insertHTML;
 console.log(“在fixInsertedHtml之前”);
 fixInsertedHtml(DIV1);&#的xD;
试验(3); //未定义ReferenceError测试
< / script>

< / body>
< / HTML> 代码>
&#的xD;