通过appendChild添加的Javascript似乎无法运行

时间:2011-09-29 21:32:37

标签: javascript appendchild dynamic-script-loading

我有一个动态添加到页面的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)。我应该期待它运行,还是已知的行为?如果它应该,为什么不呢?

3 个答案:

答案 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?