我有一个动态添加到页面的javascript文件。如果我使用document.write,它可以正常工作:
<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)。我应该期待它运行,还是已知的行为?如果它应该,为什么不呢?
答案 0 :(得分:3)
你的脚本运行正常,你不能document.write
。使用警报或其他内容对其进行测试,并避免完全使用document.write
。
答案 1 :(得分:1)
如果可能,你应该真的避免使用avoid using document.write。有更好的方法来include Javascript within Javascript
答案 2 :(得分:0)
您的示例适用于Safari。以下是一些问题:
您正在测试哪些浏览器? (猜猜你在IE上遇到了麻烦。)
您是从服务器尝试此操作而不只是将index.html拖入浏览器吗?
页面上还有哪些可能阻止myDynamicServer.js的内容?
有什么东西被劫持了window.onload?
您是否尝试将myDynamicServer.js附加到document.getElementsByTagName('BODY')[0]而不是document.body?