InAppBrowser(PhoneGap Build 3.1.0)事件不会在Android 2.3上触发

时间:2013-11-05 09:25:37

标签: javascript android cordova phonegap-build inappbrowser

我使用PhoneGap Build将AngularJS项目打包为移动应用程序,它使用InAppBrowser打开Facebook / Twitter OAuth页面。

我的配置:

  • Angular 1.0.8
  • PhoneGap构建
  • 上的PhoneGap 3.1.0
  • InAppBrowser 0.2.3
  • 在启用和禁用水合作用的情况下进行测试,结果相同

以下是我使用的代码段:

// This part code is called from click handler of a button,
// this is the only place that used the PhoneGap API.
var ipwin; // Used in somewhere else
document.addEventListener("deviceready", function() {
    ipwin = $window.open("some url", "_blank");
    $(ipwin).on("loadstop", function(e) {
        var url = e.originalEvent.url;
        console.log("loadstop: " + url);
        // snipped
    });
    // Below are testing code added while debugging
    var test = function() {
        console.log("setTimeout test");
    };
    setTimeout(test, 2000);
    test();
}, false);

这在Android 4.0上运行良好,但在Android 2.3上loadstop事件不会触发。我还尝试了loadstartloaderror,但没有一个发射。更奇怪的是,setTimeout test只出现在控制台输出中一次而不是两次。我的代码有什么问题吗?

4 个答案:

答案 0 :(得分:1)

经过一些重构和对应用程序的更改后,问题神秘地消失了。不完全确定,但我认为这是因为页面中的其他一些脚本与cordova.js冲突。

答案 1 :(得分:1)

我在Android上遇到类似问题的PhoneGap 3.0和3.1,恢复到PhoneGap 2.9使这些InAppBrowser事件再次发生火灾。

答案 2 :(得分:0)

最后一个phonegap / cordova版本3.1.0似乎有问题。

https://groups.google.com/forum/#!topic/phonegap/e5_5unC2fYs

尝试旧版本。

答案 3 :(得分:0)

这个问题发生在我身上,我做了这些步骤来解决它:

  • 将您的Phonegap版本升级到3.1
  • 创建新项目
  • 添加平台,然后添加插件
  • 将您的代码重新复制回www

这应该可以解决你的问题