2011-03-06 62 views
0

这是一个非常“标准”的一段JavaScript代码(我已经看到了成千上万的例子),但它不为我工作:简单的JavaScript的appendChild不工作

<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> 

其实我不会出现任何错误,并且标签实际上是appendeded - 不幸的是它完全是空的(我用注释的警报行检查它)。请考虑“toBeIncluded.js”文件存在,不是空的,并且位于此HTML的同一本地目录中(我在本地PC上运行所有内容)。

请帮帮忙,我试过很多可能的变化(变化目录,包括完整路径,移动代码,以“身体”部分,...),但没有成功

+0

适合我。浏览器中的错误控制台是否显示任何错误或警告? – duri

+0

你有DOCTYPE吗? –

+1

使用HTTP流量分析器来确定是否已创建脚本文件的HTTP请求(以及响应是什么)。 –

回答

0

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

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

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

如果脚本元素已成功添加但没有发出HTTP请求,那么您可能会遇到浏览器安全设置问题。例如,如果请求跨越HTTP/HTTPS或http/file协议的边界,浏览器可能会默默拒绝它。

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

+0

@infist - 感谢您的建议。我曾经拥有Firebug,但它与我目前使用的4.0b.11 beta版本不兼容。可能明天我会重新安装previouos版本并使用Firebug进行测试。目前我正在使用HTTPFox进行一些检查 – Bob