怎么听inAppBrowser关闭事件

问题描述 投票:3回答:3

以下是我目前使用的代码。我想知道我怎么听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();
  }

}
cordova ionic-framework ionic2
3个回答
9
投票

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

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

1
投票

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

Ionic 2 API DOCS没有什么话说,你如何使用它,但因为你可以订阅它,那么你可以做这样的事情在你的构造函数(可能你会不会好,因为用户可以离开应用程序在这个页面的时候回来)或您paymentFormmethod内。

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

1
投票

只是为了澄清Navneil Naicker的正确答案。如果你没有的jQuery,你会改用addEventListeneron。这可以从window.open的返回值来完成。

var popupWindow = window.open(url, "_blank");
popupWindow.addEventListener('exit', function (event) {
    alert('user closed in app browser!');
});
© www.soinside.com 2019 - 2024. All rights reserved.