脚本“src”标记问题

时间:2012-03-13 18:21:47

标签: javascript include src

我在页面中嵌入了一个脚本,如下所示:

<script type="text/javascript">

function fireNlPopup()
{
    setOpacity(0);
    centre();
    document.getElementById("NlPopup").style.display = "block";
    fadeInNlPopup();
}

//Other functions here

</script>

这使得以下内容显示为窗口中的弹出窗口:

<div id='NlPopup' name='NlPopup' class='nl'>
<table width='380' cellpadding='0' cellspacing='0' border='0'>
<tr>
<td><img height='23' width='356' src='images/x11_title.gif'></td>
<td><a href='javascript:fadeOutNlPopup();'><img height='23' width='24' src='images/x11_close.gif' border='0'></a></td>
</tr>
<tr><td colspan='2' style='background: url("images/x11_body.gif") no-repeat top left; width: 380px; height: 277px;'>
Your next lecture is X, with Y, at Z.
</td></tr>
</table>
</div>

最后,这一切都是通过按钮调用的:

<button type="button" style="button" onClick="fireNlPopup()">Next Lecture</button>

问题是当我尝试将脚本放在不同的文件中时。我有一个名为popup.js的文件,其代码完全相同(因为它嵌入我的php文件时有效,我假设我将其复制到js文件中并调用它,它会起作用。

当我调用js文件时,我使用:

<script type="text/javascript" src="popup.js">
</script>

然后脚本标记之间的所有内容都进入popup.js。然而,尽管代码在嵌入时工作正常,但第二个我把它拿出并放在自己的文件中,它不起作用。我进行了双重和三重检查,我的代码工作正常,语法正确,这就是为什么我把它留在代码片段中。由于某种原因,它只是停止工作。我是否错误地调用了该文件?它在我的服务器上,我也检查过它= P

我可能真的很蠢,但任何帮助都会非常有用。我已经坚持了很久。

谢谢=)

编辑:对于那些想看一眼的人来说,页面就在这里:http://oliverlea.com/3yp/tt.php

此外,使用Chrome查看来源,该文件会作为链接加载。

感谢帮助=)

编辑2:

首先,脚本标记是我文件的头部。

第二: 好的,所以不管我是否使用src =“popup.js”“/ popup.js”或“./popup.js”我什么也得不到。该网址始终在Chrome的源查看器中加载,即使将文件的权限更改为0755,它仍然没有区别。

我完全不知所措。

4 个答案:

答案 0 :(得分:2)

需要先解析脚本,然后才能引用它。这是竞争条件的经典案例。如果要在DOM中引用脚本,请确保脚本位于<head>中。另外,请确保src="/path/to/popup.js"

中的路径正确无误

答案 1 :(得分:1)

这是popup.js文件的编码问题。请参阅下面的分析。有些浏览器会“修复”这个,而其他浏览器则没有。解决方案是以标准编码保存popup.js文件,在Windows机器上尝试保存在记事本中。

编辑:添加摘要(上图)。您的问题的完整分析如下:

您的网页适用于IE9,但不适用于Chrome或Firefox。此外,我将页面和CSS和JS(但不是图像)复制到本地项目中,它也适用于我(即使在chrome和Firefox中)。

然后我将您的实时页面加载到FireFox并打开FireBug,当我点击“Next Lecture”时,控制台向我显示FireNlPopup未定义。

进一步审核后,我在您的实际页面上查看FireFox中的源代码,然后点击“popup.js” 结果看起来像这样: popup.js source view in firefox

好像你正在使用某种文本编辑器来创建一个以奇怪的格式编码的popup.js文件;使用标准的记事本或Notepad ++(即不是Wordpad)或使用Eclipse或Visual Studio来保存popup.js文件,你应该很好。

答案 2 :(得分:0)

尝试使用:

<script type="text/javascript" src="/popup.js"></script>

或者如果不起作用:

<script type="text/javascript" src="./popup.js"></script>

可能找不到路径,但使用Firebug或Chrome的控制台应该可以告诉你。

答案 3 :(得分:0)

我有不同的原因,但症状相同。基本上我没有在服务器上建立脚本文件的连接,需要添加到路由表来检索它。后见之明有点愚蠢,但我可能会节省一些时间。

FWIW,我添加了(使用node.js);

// script routes
app.get('/scripts/:script',                  script_server.serve);

并在script_server.js

exports.serve = function(req, res){
  res.sendfile(req.param('script'));
};