总之,问题是:使用inappbrowser如何使用系统浏览器加载外部网址并阻止它们显示在inappbrowser中?
更多细节
我使用inappbrowser来显示客户门户网站,但是我想在系统浏览器中显示门户网站上的外部链接。
我希望能够做的是检测外部URL,在系统浏览器中打开外部链接,然后确保在按下外部链接之前,inappbrowser仍然显示相同的页面。
我正在使用loadstart事件来检测URL,然后使用window.open(url,' _system');打开系统浏览器。问题是当系统浏览器关闭时,外部页面也显示在inappbrowser中。
所以最初在加载系统浏览器后,我再次使用我想要显示的url初始化了inappbrowser。这很好,但我放松了所有会话历史记录,下次按下后退按钮时,inappbrowser关闭。
我尝试的下一件事是使用执行脚本功能:
app.inAppBrowserRef.executeScript({
code: "window.open('" + overrideUrl + "', '_blank');"
}, function () {
//alert("Redirected!");
});
这会加载系统浏览器中的链接,并且系统浏览器关闭时显示的页面是正确的。问题是正在显示的视图没有运行我的loadstart代码,所以如果我点击相同的外部链接,它现在加载到同一视图而不是系统浏览器。此外,如果我进行一些调试,我也不会看到任何证据表明我所看到的是inappbrowser,或者它没有我的代码。我也试过执行window.location = overrideUrl,这也没有。
奇怪的是,当我使用chromecustomtab插件而不是系统浏览器打开url时,executeScript会根据需要运行。因此,这与在系统浏览器打开时运行执行脚本有关。如果设备上没有安装chrome,我需要支持系统浏览器。
这一定是一个常见的问题,所以真的希望有一个解决方案。
提前致谢!
答案 0 :(得分:0)
问题是当系统浏览器打开时,inappbrowser会丢失其事件。我正在打开一个新问题,其中问题更为相关。