Javascript 页面刷新时动态加载脚本标记失败

Javascript 页面刷新时动态加载脚本标记失败,javascript,Javascript,我正在用AngularJS开发一个web应用程序,因此我们有很多脚本标记。出于调试的目的,我们希望将它们单独加载,但我们也使用一个普通的HTML页面,因此我们没有ASP.net捆绑等的奢侈 为了便于使用,我打算创建一个JS文件来加载所有其他文件,这样我们的所有开发人员只需在页面上放置一个文件,他们就可以更新函数读取的主列表 当我运行应用程序时,这在初始页面加载时非常有效,但当我刷新页面时,所有内容都被彻底破坏了 我正在寻找一个修复方法,或者一个更好的加载脚本的方法 Javascript: 首先定

我正在用AngularJS开发一个web应用程序,因此我们有很多脚本标记。出于调试的目的,我们希望将它们单独加载,但我们也使用一个普通的HTML页面,因此我们没有ASP.net捆绑等的奢侈

为了便于使用,我打算创建一个JS文件来加载所有其他文件,这样我们的所有开发人员只需在页面上放置一个文件,他们就可以更新函数读取的主列表

当我运行应用程序时,这在初始页面加载时非常有效,但当我刷新页面时,所有内容都被彻底破坏了

我正在寻找一个修复方法,或者一个更好的加载脚本的方法

Javascript:

首先定义要加载的脚本:

var scripts = {
    libs: [
        "jquery/jquery-1.10.2.js",
        "angularjs/angular.js",
        "kendo/2014.2.716/kendo.all.min.js",
        "d3/d3.js"
    ],
    modules: [
        "hiModule.js"
    ],
    common: [
        "Classes.js"
    ],
    components: [
        "contentArea/contentAreaCtrl.js",

        "kendoGrid/kendoGridDir.js",
        "kendoGrid/kendoGridCtrl.js",
        "kendoGrid/kendoGridSvc.js",

        "login/loginDir.js",
        "login/loginCtrl.js",

        "search/searchCtrl.js",
        "search/searchDir.js",

        "sidebar/sidebarDir.js"
    ],
    services: [
        "sessionTrackerSvc.js"
    ]

};
然后构建脚本URL并将其添加到文件队列:

function buildScriptUrls() {
    var i;
    for (var key in scripts) {
        if (key) {
            var fileUrl;
            var arrayLength = scripts[key].length;
            for (i = 0; i < arrayLength; ++i) {
                if (key === "libs") {
                    fileUrl = "Scripts/libs/" + scripts[key][i];
                } else if (key !== "modules") {
                    fileUrl = "Scripts/SPEnterprisePortal/" + key + "/" + scripts[key][i];
                } else {
                    fileUrl = "Scripts/SPEnterprisePortal/" + scripts[key][i];
                }
                fileQueue.push(fileUrl);
            }
        }
    }
}
实际执行发生在脚本底部的IIFE中:

var fileQueue = [];
buildScriptUrls();
var counter = fileQueue.length;
appendChild();
您会注意到,该函数从脚本列表的末尾开始,并反向运行。这是因为我的函数调用具有嵌套性质。所有脚本都已创建,但每个appendChild函数都会调用自身,并且在加载脚本之前不会将脚本追加到页面。因此,调用的最后一个脚本首先添加到页面中,因此函数需要向后运行

这是我自己的发明,所以我肯定有更好的方法,但现在我只是想弄清楚为什么它在加载时工作良好,然后在页面刷新时,一切都中断了


谢谢

什么样的刷新会破坏东西?control+F5=中断,但第二次页面正常工作?看起来任何刷新都会中断它:Ctrl+F5,F5,Ctrl+R。但再一次,调试时从Visual Studio首次启动运行正常,如果我在调试时在其他浏览器中打开它,它也正常工作。您是否启动了类似fiddler的http监视程序?也许你得到了一些404?我得到了,但应该多加注意。当重新加载失败时,这是因为浏览器正在为所有脚本抛出一个304。
var fileQueue = [];
buildScriptUrls();
var counter = fileQueue.length;
appendChild();