如何监听inAppBrowser关闭事件

时间:2017-02-19 00:27:42

标签: cordova ionic-framework ionic2

以下是我目前正在使用的代码。我想了解如何收听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();
  }

}

4 个答案:

答案 0 :(得分:9)

您的代码中存在一些错误。

documentation browser.hide()做不出你想做的事。

  

隐藏当前显示的InAppBrowser窗口。打电话给这个   如果InAppBrowser已被隐藏,则无效。

_blank将其替换为_system,因为_blank会在inAppBrowser中打开。你将无法听到近距离的事件。

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

//Events: loadstart, loadstop, loaderror, exit
browser.on('exit').subscribe(() => {
    console.log('browser closed');
}, err => {
    console.error(err);
});

答案 1 :(得分:1)

我在InAppBrowser文档中搜索并且没有像闭包事件的监听器/ promisse,你可以做的是使用Platform的resume事件,所以当InAppBrowser关闭并且应用程序从后台变为活动状态时它会触发这种方法。

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

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

答案 2 :(得分:1)

只是为了澄清Navneil Naicker的正确答案。如果没有jquery,则可以使用addEventListener而不是on。可以对window.open的返回值进行此操作。

var popupWindow = window.open(url, "_blank");
popupWindow.addEventListener('exit', function (event) {
    alert('user closed in app browser!');
});

答案 3 :(得分:1)

我知道这是3年前的问题,但是问题是有问题的,所以这里是解决方法

第一次导入InAppBrowser

import {InAppBrowser} from '@ionic-native/in-app-browser/ngx';

第二次添加到Constructor()

constructor(private iab: InAppBrowser ) {}

3rd现在您可以使用on('xxx'),其中xxx是您想要的事件 活动清单: 'loadstart'| 'loadstop'| 'loaderror'| '退出'| 'beforeload'| '消息'| 'customscheme'

在您的情况下,您想在关闭inAppBrowser时进行收听,请查看以下示例:

anyFunName(url){
let openBrowser = this.iab.create(url, '_blank');
openBrowser.on('exit').subscribe(event => {
  console.log("inAppBrowser is closed now");
  // your action here when close inAppBrowser
});
}