window.open事件侦听器无法在Android 4.4.2中工作



我有一个PhoneGap应用程序,它使用InAppBrowser加载谷歌登录体验。因此,我需要一个事件侦听器来检测浏览器何时更改位置。下面的设置在除4.4.2之外的所有Android版本上都运行得很好,据我所知;事件侦听器启动,一切正常。

然而,在Android 4.4.2上,我似乎无法让任何事件监听器为窗口开火;loadstart、onload、onscroll等。似乎什么也没发生。不幸的是,在谷歌或StackOverflow上似乎找不到任何解决方案。

不确定需要/有用的额外信息,但很乐意提供任何信息。

var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');
auth_window.addEventListener('loadstart', function(event) {
     alert("blah")
})

-

***更新***

我已经能够通过退出InAppBrowser并再次打开它来启动侦听器。我不知道为什么它在这种情况下会起作用,但在其他情况下不会。如有任何帮助,我们将不胜感激。

不断调用exec将强制处理消息。

setInterval(function () {
    cordova.exec(null, null, '', '', [])
}, 200);

我在Metroel phonegap oauth中使用了这个破解,https://github.com/jperl/meteor-phonegap-oauth/blob/badfb932bb0b525a32c35115eb75edb8d21bbf57/patch_window.js#L20-L29

这也将解决插件在下一次插件操作之前不会调用回调的问题,例如:不能在Cordova 3.4中使用异步方法。Onsuccess在插件方法的第一次调用后不会被调用

您可能有一个不太支持Android 4.4.x的旧PhoneGap/Cordova版本。在这种情况下,您应该更新PhoneGap/Cordova。

试试这个:

window.open("http://google.com", '__blank');
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');

我认为上面方法的第三个参数是Options,只有一个选项是"location"是或否,这个方法没有像"toolbar"这样的选项。

所以去掉逗号后面的多余选项,我想你会没事的。

以下是来自电话间隙文档的解释

options:InAppBrowser的选项(字符串)(可选,默认值:"location=yes")

选项字符串不得包含任何空格,每个功能名称和值必须用逗号分隔。只有以下值为支持:

>位置-设置为"是"或"否"可打开或关闭位置栏InAppBrowser

最新更新