javascript - 根据条件动态地将脚本添加到我的应用程序

标签 javascript html angularjs ionic-framework

我创建了一个 plunker与我的问题相关。

我有一个包含多个页面的应用程序,它从登录页面开始。当我的应用首次加载时,它会加载 index.html,它运行我设置的名为 config.js 的脚本,然后重定向到 login.html。这只是管理我想在整个应用程序中使用的一些设置。

config.js 中我设置了 window.localStorage.setItem("use_minified",true) 我想在 login.html 中使用它 以确定是否为我的应用程序使用缩小文件。

我看了几个问题,比如这个:

Dynamically add script tag with src that may include document.write

我已经尝试过(正如您将在我的 plunker 中看到的那样)但我收到了错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myAppdue to: Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

最佳答案

我的回答:

我保留了index.html同样,它调用config.js并重定向到 login.html .

我将这些添加到我的 config.js文件:

function init_scripts() {
    var jsDirectory = "js";
    var jsExtension = ".js";

    if (JSON.parse(window.localStorage.config).use_minified) {
        jsDirectory = "js_min";
        jsExtension = ".min.js";
    }

    loadScripts([
        "../lib/ionic/js/ionic.bundle.js",
        "../cordova.js",
        "https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.js",
        "/lib/ionic-datepicker-fork-ionic1/dist/ionic-datepicker.bundle.min.js",
        "/" + jsDirectory + "/app" + jsExtension,
        "/" + jsDirectory + "/page1" + jsExtension,
        "/" + jsDirectory + "/page2" + jsExtension,
        "/" + jsDirectory + "/page3" + jsExtension

    ], null);
}

function loadScripts(array, callback) {
    var loader = function(src, handler) {
        var script = document.createElement("script");
        script.src = src;
        script.onload = script.onreadystatechange = function() {
            script.onreadystatechange = script.onload = null;
            handler();
        }
        var head = document.getElementsByTagName("head")[0];
        (head || document.body).appendChild(script);
    };

    (function run() {
        if (array.length != 0) {
            loader(array.shift(), run);
        } else {
            callback && callback();
        }
    })();
}

<head>我的login.html我删除了所有 <script>标签并替换它们:

<head>
   <script src="/js/config.js"></script>
   <!-- Functions found in config.js -->
   <script>
      init_scripts();
      init_stylesheets();
   </script>
</head>

这似乎运行得很好。我也为样式表做了类似的事情,如你所见,我调用函数 init_stylesheets();它使用相同的概念。

关于javascript - 根据条件动态地将脚本添加到我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572205/

相关文章:

javascript - 按钮组单击处理程序 - 如何获取单击按钮的文本内容?

Javascript/HTML5 : Fullscreen Video Source (Webcam or similar)

javascript - 如何使用 Angular JS 下载 Excel

javascript - 如何在 ng-include 中调用内联方法并连接结果?

javascript - 箭头函数原型(prototype)中的这个范围

javascript - Bootstrap - 键盘无法在动态生成的文本框软搜索菜单上工作

javascript - 如何使用 GruntFile.coffee 和 package.json 提取/制作/获取/? Lungo.js 示例文件?

javascript - JS插入兄弟节点

javascript - 使用 ASP.NET 和 C# 将文件上传到服务器

javascript - 从所有事件选项卡中注销用户