0

如何访问 javascript 插件对象并使用自定义 www/index.html 位置?

当我将此行添加到project_name/www/config.xml 中时:

<content src="app/index.html" />

我可以为 www/index.html 加载自定义位置,但我无权访问已安装的任何 Cordova 插件。

以下代码在加载默认 www/index.html 时报告成功。

从 www/app/index.html 加载 index.html 时,navigator.connection 未定义,并抛出错误:

'undefined' is not an object (evaluating 'navigator.connection.type')

这是初始化phonegap的代码,等待设备准备好,初始化angularJS,然后通过插件检查连接。

var app = {
    initialize: function() {
        this.bindEvents();
    },

    bindEvents: function() {
            document.addEventListener("deviceready", this.onDeviceReady, false);
    },

    onDeviceReady: function() {
        angular.bootstrap(document, ["myApp"]);
        checkConnection();
    },
}
app.initialize();

function checkConnection() {
    alert('Reporting connection information');
    try{
        alert(navigator.connection.type);
    } catch(error) {
        alert('Error' + error);
        alert(navigator);
    }
}

附加信息:

  • 此行为与 PhoneGap 3.0 和 3.1 一致
  • 原生插件文件确实存在于 project_name/platforms/ios/Plugins 目录中(即:CDVConnection.m & CDVConnection.h)
  • 我正在使用 AngularJS 1.2
  • 用 iOS6、iOS7 测试
  • XCode 5.0 和 5.2
  • 使用 Phonegap 3.1,XCode 日志报告“ 2013-11-12 13:39:14.179 ESA Mobile[936:60b] Unlimited access to network resources ”。表明插件是在本机代码中加载的,我只是无权访问 javascript 对象。
4

1 回答 1

0

在文件www/app/index.html

不使用:

<script src="../phonegap.js"></script>

相反,使用cordova文件解决了这个问题

<script src="../cordova.js"></script>

注意:我用 phonegap 3.1 和 cordova 3.1 验证了这一点。我没有对 3.0 进行回归测试。

于 2013-11-12T22:28:40.193 回答