简单的JavaScript appendChild不起作用

时间:2011-03-06 18:34:08

标签: javascript appendchild

这是一段非常“标准”的JavaScript代码(我在成千上万的例子中看过它),但它对我不起作用:

<head>
<title>Temp</title>
<script type="text/javascript">
    function start() {
        var newScript = document.createElement('script');
        newScript.type = "text/javascript";
        newScript.src = "toBeIncluded.js";  // THIS ONE DOES NOT WORK
        document.body.appendChild(newScript);
        // alert(newScript.contentText);
    }
</script>
</head>

<body onload='start()'>
</body>
</html>

实际上我没有收到任何错误,并且标签实际上已经被置换了 - 不幸的是它完全是空的(我用注释的警报线检查它)。请考虑“toBeIncluded.js”文件存在,不为空,并且位于此HTML的同一本地目录中(我在PC上本地运行所有内容)。

请帮助,我尝试了很多可能的变化(更改目录,包括完整路径,将代码移动到“正文”部分,...)但没有成功

1 个答案:

答案 0 :(得分:0)

我建议为Firefox安装Firebug扩展程序。还有一个Firebug Lite脚本可供其他浏览器使用。它们以不同的方式工作,但具有相似的功能。正如其他人所提到的,您可以从查看HTTP事务信息中受益。在Firebug中,这可以在“Net”面板中找到。如果浏览器尝试加载脚本,那么您应该在“Net”面板中看到一个项目。 (确保在“网络”面板选项中选择了“全部”或“脚本”)。

如果您看到列出的脚本请求,则还应列出请求的结果。例如,如果它是“404 Not Found”,则URL无法正确解析。如果是“200 OK”或“304 Not Modified”,则请求成功。如果项目显示一个小的微调器图形,那么它仍然试图连接到目标服务器。

如果Net面板指示请求成功,则转到“HTML”面​​板。 HTML面板显示文档对象的当前状态,因此如果您的启动函数正确执行,那么您将看到“script”元素作为body元素的子元素。

如果成功添加了脚本元素但未发出HTTP请求,则可能是浏览器安全设置有问题。例如,如果请求越过HTTP / HTTPS或http /文件协议的边界,浏览器可能会默默地拒绝它。

尝试打开新的浏览器窗口并直接请求脚本网址。这应该有助于排除拼写错误的URL或服务器连接问题。