我有一个使用InAppBrowser加载Google登录体验的PhoneGap应用。因此,我需要一个事件监听器来检测浏览器何时更改位置。以下设置在除4.4.2之外的所有Android版本上都能正常工作,我能说得最清楚;事件监听器触发,一切都很好。
然而,在Android 4.4.2上,我似乎无法为窗口启动任何事件监听器; loadstart,onload,onscroll等。似乎什么都没发生。不幸的是,似乎无法在Google或StackOverflow上找到任何解决方案。
不确定需要/有用的其他信息,但很乐意提供任何信息。
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');
auth_window.addEventListener('loadstart', function(event) {
alert("blah")
})
-
*** ***更新
我已经能够通过退出InAppBrowser并再次打开来启动侦听器。我不知道为什么它会在这种情况下起作用,但不是这样。这里的任何帮助将非常感谢。
答案 0 :(得分:2)
不断调用exec会强制处理消息。
setInterval(function () {
cordova.exec(null, null, '', '', [])
}, 200);
我在meteor-phonegap-oauth中使用此hack,https://github.com/jperl/meteor-phonegap-oauth/blob/badfb932bb0b525a32c35115eb75edb8d21bbf57/patch_window.js#L20-L29
这也将解决插件在下一个插件操作之前不调用其回调的问题,例如:Cannot use asynchronous methods in Cordova 3.4. Onsuccess is not called after the first call of plugin method
答案 1 :(得分:0)
你可能有一个旧的PhoneGap / Cordova版本,它不能很好地支持Android 4.4.x. 在这种情况下,您应该更新PhoneGap / Cordova。
答案 2 :(得分:0)
试试这个:
window.open("http://google.com", '__blank');
答案 3 :(得分:0)
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');
我认为上述方法的第三个参数是选项,并且只有一个选项是" location"是或否,没有像"工具栏"对于这种方法。
所以删除逗号之后的额外选项,我想你会没事的。
来自手机间隙文档的解释
选项:InAppBrowser(String)的选项(可选,默认值: "位置= YES&#34)
选项字符串不得包含任何空格,每个要素名称 和值必须用逗号分隔。只有下面的值是 支持:
<强>&GT;位置 - 设置为“是”&#39;或者没有&#39;打开或关闭位置栏 InAppBrowser