2017-02-19 120 views
2

以下是我目前正在使用的代码。我想了解如何收听inAppBrowser关闭事件?当有人关闭inAppBrowser时,应用程序应该显示某种警报消息。根据documentation我不得不使用browser.close(),但这是行不通的。如何收听inAppBrowser关闭事件

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(); 
    } 

} 

回答

5

有几件事情在你的代码中是错误的。

documentationbrowser.hide()不会做你想做的事情。

隐藏当前显示的InAppBrowser窗口。如果InAppBrowser已被隐藏,则调用此函数 不起作用。

_blank_system取代它,因为_blank在inAppBrowser打开,你将不能够侦听close事件。

现在,您可以订阅浏览器并收听它的事件,例如

//Events: loadstart, loadstop, loaderror, exit 
browser.on('exit').subscribe(() => { 
    //Do whatever here 
}, err => 
    console.error(err)); 
}); 
+0

谢谢,这正是我想要的。 –

1

我搜索在InAppBrowser文档并没有什么像一个封闭的事件监听器/ promisse,你可以做什么,而不是使用平台的恢复事件,所以当InAppBrowser关闭,应用从后台来主动状态它激发这种方法。

Ionic 2 API DOCS没有什么可以说你可以使用它,但既然你可以订阅它,那么你可以在你的构造函数中做这样的事情(这可能不会很好,因为用户可以在这个时候离开应用程序页面并返回)或在您的paymentForm方法中。

this.platform.resume.subscribe(() => { 
    this.whatINeedToDoWhenUserIsBack(); 
}); 
+0

你没有看到'on' – rashidnk