(这是一个用于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中(两者均无效)。
所以我希望这里缺少一些简单的东西,这确实是一个范围问题。奇怪的是,它只能在模拟器上运行,而只能在设备本身上的第一次单击上。
谢谢!
答案 0 :(得分:0)
这是使用InAppBrowser在我的phonegap项目中进行事物设置的相关部分,如果我正确理解了您的问题,则该部分与您希望进行的设置类似。
phonegap-bootstrap.js
onDeviceReady: function() {
window.open = cordova.InAppBrowser.open;
}
打开链接时
window.open(url, '_system', 'location=yes');
我想您不需要位置标志,但是当您打开新窗口时,它会保留URL栏。希望能有所帮助,我记得在某个时候必须弄清楚这一点,但是我可能已经在记忆中迷失了任何更大的解释。