InAppBrowser loadstart事件未触发/范围问题

时间:2018-08-27 15:53:14

标签: javascript android jquery phonegap inappbrowser

(这是一个用于iOS和Android的电话间隙应用,使用JS / HTML / CSS)

我使用类选择器“ external”打开了我要使用inappbrowser的链接。所以我有以下代码打开这些链接:

$("body").on("click", "a.external", function(){
    var thisHref = $(this).attr("href");
    appBrowser = cordova.InAppBrowser.open(thisHref, '_blank', 'location=no, zoom=no');
    appBrowser.addEventListener('loadstart', function(event) { 
    if (event.url == "XXXXX") { appBrowser.close(); }
});

在外部URL本身,我设置了链接到“ XXXXX”的链接,这些链接应关闭inAppBrowser。一切都能在Phonegap Desktop模拟器上100%正常运行,但是当我在实际设备上安装.apk或.ipa文件时,除非在应用程序中进行首次首次点击,否则不会启动loadstart。

这使我相信这是一个范围问题,因为看起来监听器仅在单击a.external之后直接发生loadstart时才拾取。 (P.S. appBrowser是全局定义的[var appBrowser;在顶部])。

我不确定如何安排代码,以便侦听器被附加,并在整个过程中继续工作。我尝试将addEventListener单独放置在deviceready函数中,或者将整个东西放置在deviceready中(两者均无效)。

所以我希望这里缺少一些简单的东西,这确实是一个范围问题。奇怪的是,它只能在模拟器上运行,而只能在设备本身上的第一次单击上。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是使用InAppBrowser在我的phonegap项目中进行事物设置的相关部分,如果我正确理解了您的问题,则该部分与您希望进行的设置类似。

phonegap-bootstrap.js

onDeviceReady: function() {
    window.open = cordova.InAppBrowser.open;
}

打开链接时

window.open(url, '_system', 'location=yes');

我想您不需要位置标志,但是当您打开新窗口时,它会保留URL栏。希望能有所帮助,我记得在某个时候必须弄清楚这一点,但是我可能已经在记忆中迷失了任何更大的解释。