通过innerHTML注入脚本:函数与全局

时间:2015-03-10 11:36:13

标签: javascript eval innerhtml

我有一些HTML结构如下

<script>
function x()
{
 alert('works');
}
</script>

<table>
(...)
</table>

<script>
console.log('autoexec');
</script>

我是通过XMLHttpRequest从DIV的innerHTML中的文件加载此HTML。

完成请求后,这就是我的工作

div.innerHTML = request.responseText;    
var scripts = div.getElementsByTagName("script");       
for(var i=0;i<scripts.length;i++) eval(scripts[i].text);     

包含函数外部代码的底部脚本将被执行。 但是,顶部脚本中的函数x()不会被评估并且仍然不可用。

我错过了什么? 感谢

1 个答案:

答案 0 :(得分:0)

解决。我现在使用document.head.appendChild(scripts [i])而不是eval(scripts [i] .text)。这两个都正确执行函数外部的代码并使该函数可用于调用。