加载外部JavaScript文件

加载外部JavaScript文件,javascript,cordova,phonegap,Javascript,Cordova,Phonegap,我有一个使用PhoneGap/Cordova构建的跨平台应用程序 我正在尝试实现一个函数,该函数在控制器加载时运行一个外部JavaScript文件。我正在遵循来自的解决方案。同样地。但是我希望JavaScript在没有window.open事件的情况下执行,也就是说,我希望在设备准备好后立即运行executeScript 如何调用executeScript(),而不首先定义var ref var navigation = angular.module("navigation", []); nav

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

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

如何调用executeScript(),而不首先定义var ref

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);
                    });
              }
            );
        });
});

您可以尝试将脚本添加到
index.html
文件中,并从JS执行任何操作。此外,您必须将此端点添加到白名单中

<!-- index.html -->

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

函数onCustomLoad(){
//做事
}
您可以使用

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

然后在完成后调用函数

Yip。两者都添加了,但是我如何从onDeviceReady函数自动调用该方法呢?我不确定语法。您可以在脚本中添加一个
onload
侦听器来检查何时加载,另一个侦听器来检查cordova何时准备就绪(触发事件
cordovaReady
或类似事件)