如何在DOM结构中加载动态JS代码?

时间:2012-11-04 11:23:48

标签: javascript jquery html

我有一个带有JS元素的HTML,我需要在运行时加载。

这些是一些示例文件,用于说明我正在寻找的功能。

文件1:index.html

<div id="mydiv"> </div>
<script type="text/javascript">
   xmlhttp=new XMLHttpRequest();
   xmlhttp.open("GET","script.php",false);
   xmlhttp.send();
   var text=xmlhttp.responseText;
   var elem=document.getElementById("mydiv")
   elem.innerHTML=text
   func() 
</script>    

文件2:script.php

<script type="text/javascript">
   function func(){
       alert("func")
   }
</script>

浏览器返回的错误:

  

内联脚本线程
未捕获的异常:ReferenceError:未定义   变量:func在第20行,第0列中引发错误   本地主机/ MY_PROJECT /:       FUNC()

1 个答案:

答案 0 :(得分:0)

.innerHTML不会在html中执行脚本元素。

试试这个:

xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","script.php",false);
xmlhttp.send();
var text=xmlhttp.responseText;

var root = document.createElement("div");
root.innerHTML = text;
var scripts = root.getElementsByTagName("script");

for( var i = 0; i < scripts.length; ++i ) {
    var code = scripts[i].innerText || scripts[i].textContent || scripts[i].innerHTML || "";
    eval(code);
}

func();