【发布时间】:2015-03-22 13:41:57
【问题描述】:
我正在使用eval()在完全重写一个div(其代码通过XMLHttpRequest加载)后执行所有<script>标签:
var arr = document.getElementById('idOfDIV').getElementsByTagName('script');
for (var n = 0; n < arr.length; n++){
try {
eval(arr[n].innerHTML);
} catch(err) {
console.log(err);
}
}
它适用于内联脚本,但对以下脚本没有影响:
<script src="/path/to/externalScript.js"></script>
怎么会?我可以“强制”浏览器加载并执行外部脚本吗?
注意:正如我所指出的,关于eval() 将字符串作为javascript 执行的事实,这个问题可能看起来很“奇怪”。我需要做的是强制浏览器加载包含在“粘贴”DOM 中的外部脚本,并执行它们。
【问题讨论】:
-
嗯,你不能这样做,因为脚本标签在 HTML 中没有源代码。您可以再次添加脚本标签,但这可能会导致大量泄漏。
-
记住:eval() 是邪恶的
-
我不清楚您要做什么——
eval()将字符串作为可执行的 JavaScript 代码运行,它对 HTML 标记没有任何作用。如果您使用的是 jQuery,我建议您使用$.getScript()方法。 -
@Logard:我知道;但在这种情况下是我唯一的选择。
-
@Blazemonger:你说得对,我正在用注释更新问题
标签: javascript html dom browser