无法在文件中包含外部Javascript

时间:2012-12-01 03:05:56

标签: javascript html xampp

我是PHP新手,非常了解任何服务器管理的新手。我正在使用XAMPP 3.1.0 for Windows并使用PHP 5.4版。

我的PHP脚本执行得很好,但无论出于何种原因,我似乎无法包含外部js文件,如下所示:

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

但是,我可以毫无问题地做到这一点。

<script type="text/javascript">
    alert("some alert");
</script>

有谁知道最近发生了什么?

[编辑:这是我的文件夹结构。我的文件的路径是: C:\ xampp \ htdocs \ AllocatedSpendingPlan \ - 它们都位于根目录。]

Folder Structure

这是我的档案:

[编辑:我使用src属性从脚本标记的正文中删除了代码,但它仍无效。]

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <script type="text/javascript" src="core.js"></script>
        <script type="text/javascript">
            alert("working");
        </script>
    </head>
    <body>
        There is stuff here.
    </body>
</html>

当我查看Firefox中的Net选项卡时,我显示该文件已被下载,但没有任何脚本正在执行,并且在我进行调试时未加载文件本身。

这是脚本调试器,显示没有加载文件:

Firefox's Script Debugger, Not Showing Loaded Script

最后,这是我的网络标签,显示该文件已下载:

Firefox's Net Tab, Showing That The File Was Located and Downloaded

[编辑:已修复。我的命名空间声明中的错误。我将var声明为函数,它应该是一个对象文字。]

这是正确的代码。其他一切都很好。

var Core = {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

Core.namespace("Budgeting.Tools.AllocatedSpending");

Core.Budgeting.Tools.AllocatedSpending = function(){
    return {
        greet: function(){
            alert("hello");
        }
    };
};

var d = new Core.Budgeting.Tools.AllocatedSpending();
d.greet();

3 个答案:

答案 0 :(得分:1)

看到截图后,

  1. 当您使用src=""属性时,您应该将<script>标记的正文留空。因此,请从那里删除alert("I am here, aren't you!")
  2. 在路径中找不到您的core.js。让我们知道文件夹路径。

答案 1 :(得分:0)

  • 检查控制台是否有错误(CTRL + SHIFT + I代表Chrome / Windows)。
  • 您的core.js文件中可能是404错误或错误。确保路径正确:<script type="text/javascript" src="/path/to/core.js"></script>

  • 该脚本可能过早/迟到。要对此进行测试,请确保<script>

  • 中的<head>阻止

答案 2 :(得分:0)

这是一个简单的编码错误。我将命名空间声明为函数而不是对象文字。代码应该是:

var Core = {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

而不是:

var Core = function () {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

谈论没有看到森林的树木......