Ajax HTML responseText中包含的Javascript <script>(用innerHTML插入) - 如何执行函数

时间:2017-01-27 14:36:33

标签: javascript ajax innerhtml

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

&#xA;&#xA;

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

&#xA;&#xA;
&#XA;

ReferenceError:x未定义

&#xA;
&#xA;&#xA;

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

&#xA;&#xA;

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

&#xA;&#xA;

Edit1:&#xA;更好的例子

&#xA;&#xA;

&#xD;&#xA;
&#xD;&#xA;
 &lt;!DOCTYPE html&gt;&#xD;&#xA;&lt; html&gt ;&#的xD;&#XA;&LT; HEAD&GT;&#的xD;&#XA; &lt; meta charset =“utf-8”&gt;&#xD;&#xA;&lt; script&gt;&#xD;&#xA; function fixInsertedHtml(eScript){&#xD;&#xA; var codes = eScript.getElementsByTagName(“script”);&#xD;&#xA; for(var i = 0; i&lt; codes.length; i ++){&#xD;&#xA;的eval(代码[I]的.text);&#的xD;&#XA; &#xD;&#xA; &#xD;&#xA;&lt; / script&gt;&#xD;&#xA;&lt; / head&gt;&#xD;&#xA;&lt; body&gt;&#xD;&#xA;&lt; div id =“div1”&gt; div1&lt; / div&gt;&#xD;&#xA;&#xD;&#xA;&lt; script&gt;&#xD;&#xA; var insertHTML =“Inserted HTML \&#xD;&#xA;&lt; script&gt; \&#xD;&#xA; alert('in inserted script'); \&#xD;&#xA; test(1) ; \&#xD;&#xA;功能测试(val){console.log('test'+ val);} \&#xD;&#xA; test(2); \&#xD;&#xA ;&LT; \ /脚本&gt;“中;&#的xD;&#XA; div1.innerHTML = insertHTML;&#xD;&#xA; console.log(“在fixInsertedHtml之前”);&#xD;&#xA; fixInsertedHtml(DIV1);&#的xD;&#XA;试验(3); //未定义ReferenceError测试&#xD;&#xA;&lt; / script&gt;&#xD;&#xA;&#xD;&#xA;&lt; / body&gt;&#xD;&#xA;&lt; / HTML&GT;  
&#的xD;&#XA;
&#的xD;&#XA;
&#的xD;&#XA;

&#XA ;

0 个答案:

没有答案