PhoneGap 3.x / iOs6 iOs7 / AngularJs - 插件对象不适用于自定义 www/index.html 位置

Posted

技术标签:

【中文标题】PhoneGap 3.x / iOs6 iOs7 / AngularJs - 插件对象不适用于自定义 www/index.html 位置【英文标题】:PhoneGap 3.x / iOs6 iOs7 / AngularJs - Plugin objects aren't available with custom www/index.html location 【发布时间】:2013-11-12 22:04:54 【问题描述】:

如何访问 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] 无限访问网络资源”。表明插件是在本机代码中加载的,我只是无权访问 javascript 对象。

【问题讨论】:

张贴您的 index.html,其中包含 cordova_plugins.js 邮寄是什么意思? cordova_plugins.js 位于 www/cordova_plugins.js 我希望您从 index.html 中添加代码...所以在您的 index.html 中,您有 &lt;script src="cordova_plugins.js"&gt;&lt;script src="../cordova_plugins.js"&gt; cordova_plugins.js 应该包含在 www/phonegap.js 中,并且不必特别包含,尽管这是故障排除的好方向。我用the following answer 解决了这个问题。我还没有深究其背后的原因。感谢您提供帮助。 【参考方案1】:

在文件www/app/index.html

不要使用:

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

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

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

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

【讨论】:

嗨,布赖恩,是的,我已经检查过了。实际上,我正在使用 Facebook 登录,并且在其中,我有 import cordova.js 而不是 phonegap.js。它运行良好。但是有一个问题......我也在该项目中使用社交插件。这与 Phonegap.js 一起使用。因此,当我评论 phonegap.js 并导入 cordova.js 时,社交插件无法正常工作。和 Facebook 工作。相反,facebook 不工作,社交插件工作。那么你对此有什么想法吗?

以上是关于PhoneGap 3.x / iOs6 iOs7 / AngularJs - 插件对象不适用于自定义 www/index.html 位置的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap:iOS 7 中的 UIPickerView 不会像在 iOS 6 中那样自动调整字体大小。关于如何在 iOS 7 中实现的任何解决方案?

iOS6 vs iOS7 外观界面生成器

更改导航栏ios6和ios7的颜色

iOS6 vs iOS7,UITableViewCell 滑动删除问题

自动布局 iOS7 -> 带状态栏的 iOS6

如何支持IOS6和IOS7应用图标并在同一个应用中启动图像?