我有一个JavaScript文件被动态添加到页面。如果我使用文件撰写,它工作正常:通过appendChild添加的Javascript似乎无法运行
<html>
<head></head>
<body>
<script type="text/javascript">
var src = 'myDynamicScript.js';
document.write('<scr' + 'ipt type="text/javascript" src="' + src + '"></scr' + 'ipt>');
</script>
</body>
</html>
不过,如果我使用的appendChild,如this answer概述,脚本会下载,但从来没有运行:
<html>
<head></head>
<body>
<script type="text/javascript">
var src = 'myDynamicScript.js';
var script = document.createElement("script");
script.type = "text/javascript";
script.src = src;
document.body.appendChild(script);
</script>
</body>
</html>
我有一个简单的例子设置here (write)和here (append)。我应该期望它运行,还是已知的行为?如果它应该,为什么不呢?
为什么我不能使用document.write(除了它是“邪恶的”)?我的意思是为什么在这种特殊情况下被禁止? – sprugman
这不是禁止的,但它会在原始文档(即您的主页)已经**关闭**之后发生。当您执行后续的“写入()”操作时,原始页面将被丢弃。 – Pointy
实际上,@Pointy似乎是相反的 - 据我所知,appendChild-ed脚本中的document.write永远不会发生或被主页以某种方式覆盖。如果我把它放在setTimeout中,那么我可以把它覆盖我的主页面。 – sprugman