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

Injecting scripts through innerHTML: functions vs global

本文关键字:函数 全局 脚本 innerHTML 注入 通过      更新时间:2023-09-26

>我有一些HTML结构如下

<script>
function x()
{
 alert('works');
}
</script>
<table>
(...)
</table>
<script>
console.log('autoexec');
</script>

我正在通过XMLHttpRequest从DIV的内部HTML中的文件加载此HTML。

完成请求后,这就是我所做的

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

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

我错过了什么?谢谢

已解决。我现在使用 document.head.appendChild(scripts[i])代替 eval(scripts[i].text)。这既可以正确执行函数外部的代码,又可以使函数可供调用。