以下是我目前使用的代码。我想知道我怎么听inAppBrowser
关闭事件?当一些关闭inAppBrowser,应用程序应该表现出某种警报消息。
按照documentation我必须使用browser.close()
,但这不起作用。
import { Component } from '@angular/core';
import { NavController, NavParams, Platform, LoadingController } from 'ionic-angular';
import { InAppBrowser } from 'ionic-native';
@Component({
selector: 'page-payment-information',
templateUrl: 'payment-information.html'
})
export class PaymentInformationPage {
constructor( public navCtrl: NavController, public navParams: NavParams, public platform: Platform, public loadingCtrl: LoadingController ) {
this.platform = platform;
}
paymentForm(){
let browser = new InAppBrowser('https://www.stackoverflow.com', '_blank', 'hidden=no,location=no,clearsessioncache=yes,clearcache=yes&enableViewportScale=yes');
browser.close();
}
}
有几件事情是错误的代码。
从documentation browser.hide()
不会做你想做的事。
隐藏当前示出的InAppBrowser窗口。调用这没有任何影响,如果InAppBrowser已经隐藏。
_blank
因为_system
在inAppBrowser打开与_blank
更换。您将无法监听close事件。
现在,您可以订阅到浏览器,听它的事件,例如
//Events: loadstart, loadstop, loaderror, exit
browser.on('exit').subscribe(() => {
console.log('browser closed');
}, err => {
console.error(err);
});
我搜索在InAppBrowser文档并没有什么像一个封闭的事件监听器/ promisse,你可以做什么,而不是使用平台的恢复事件,所以当InAppBrowser关闭,应用程序是从背景到激活状态来它触发此方法。
在Ionic 2 API DOCS没有什么话说,你如何使用它,但因为你可以订阅它,那么你可以做这样的事情在你的构造函数(可能你会不会好,因为用户可以离开应用程序在这个页面的时候回来)或您paymentForm
method内。
this.platform.resume.subscribe(() => {
this.whatINeedToDoWhenUserIsBack();
});
只是为了澄清Navneil Naicker的正确答案。如果你没有的jQuery,你会改用addEventListener
的on
。这可以从window.open
的返回值来完成。
var popupWindow = window.open(url, "_blank");
popupWindow.addEventListener('exit', function (event) {
alert('user closed in app browser!');
});