【发布时间】:2017-06-07 00:10:29
【问题描述】:
我这几天一直在努力解决这个问题,所以真的希望有人能提供解决方案!
这个问题只存在于Android,iOS似乎可以正常工作。
应用正在使用 inappbrowser 显示网站。单击网站外部的链接时,我想在系统浏览器中启动所选链接,然后确保 inappbrowser 页面不会更改。我使用下面的代码进行这项工作。我遇到的问题是,在系统浏览器打开后,我的所有事件(loadstart、loadstop)都不再起作用,因此如果选择了另一个外部链接,现在在 loadstart 事件中不会检测到它并在 inappbrowser 中打开。
如果我只是注释掉 window.open(url, '_system');在 loadstart 事件中,一切都继续正常工作,但显然外部链接没有在系统浏览器中打开。
launchBrowser: function (url) {
app.inAppBrowserRef = cordova.InAppBrowser.open(url, '_blank', app.browserOptions);
app.inAppBrowserRef.addEventListener('loadstart', function (event) {
var url = event.url;
// Determine if this is an external link that should be launched in the system browser.
if (url.toLowerCase().indexOf(app.portalUrl.toLowerCase()) === -1) {
//External link, launch in system browser.
window.open(url, '_system');
app.setInappBrowserUrl(app.previousUrl);
}
});
app.inAppBrowserRef.addEventListener('loadstop', function (event) {
app.previousUrl = event.url;
});
},
覆盖inappbrowser页面的功能。
setInappBrowserUrl: function (overrideUrl) {
app.inAppBrowserRef.executeScript({
code: "window.location = '" + overrideUrl + "';"
}, function () {
//alert("Redirected!");
});
}
我有一个粗略的解决方法,涉及使用我要显示的 url 调用 launchBrowser(),但问题是我丢失了所有历史记录,所以当你按下后退按钮时,inappbrowser 会关闭。
感谢收看!
【问题讨论】:
-
您使用的是
hardwareback选项吗?必须设置为yes -
我正在使用hardwareback选项,这一切都按预期工作,即在解决它时关闭了inappbrowser,因为没有前一页可以访问,因为inappbrowser已被重新初始化。我只想把这个工作作为最后的手段。
-
我在 iOS 上遇到了同样的问题 :( 你找到解决方案了吗?
标签: javascript android cordova inappbrowser