加载外部JavaScript文件

时间:2017-07-04 15:54:17

标签: javascript cordova phonegap

我有一个使用PhoneGap / Cordova构建的跨平台应用程序。

我正在尝试实现一个在控制器加载时运行外部JavaScript文件的函数。我正在遵循HERE的解决方案。同样HERE。但我希望JavaScript在没有window.open事件的情况下执行,即我想在设备准备就绪后立即运行 executeScript

如何在不先定义 var ref 的情况下调用 executeScript()

var navigation = angular.module("navigation", []);
navigation.controller("Navigation", function ($scope) {

    var init = function () {
        document.addEventListener("deviceready", onDeviceReady, false);
    };

    init();

    function onDeviceReady() {
        // LOAD EXTERNAL SCRIPT
        var ref = window.open('http://www.haruair.com/', '_blank', 'location=yes, toolbar=yes, EnableViewPortScale=yes');
        ref.addEventListener("loadstop", function () {
            ref.executeScript(
              { file: 'http://haruair.com/externaljavascriptfile.js' },
              function () {
                  ref.executeScript(
                    { code: 'getSomething()' },
                    function (values) {
                        var data = values[0];
                        alert("Name: " + data.name + "\nAge: "  + data.age);
                    });
              }
            );
        });
});

2 个答案:

答案 0 :(得分:1)

您可以尝试在index.html文件中添加脚本,并从JS做任何您想做的事情。此外,您必须将此端点添加到白名单中。

<!-- index.html -->

<script>
  function onCustomLoad() {
    //do stuff
  }
</script>
<script src="your-custom-script" onload="onCustomLoad"></script>

答案 1 :(得分:0)

你可以使用

var script = document.createElement("script");
script.type = "text/javascript";
script.id = "some_id";
script.src = 'http://haruair.com/externaljavascriptfile.js';
document.head.appendChild(script);

然后在完成后调用该函数