从其他应用返回导航会中断点击处理程序

时间:2019-05-16 13:22:07

标签: angularjs angular ionic-framework ionic2

对于我们公司,我们使用Mobicontrol Soti推出了许多设备。这样一来,我们就可以将设备锁定在称为信息亭模式的状态,该模式将禁止使用主屏幕,并提供了一个自定义屏幕,其中只有我们可以决定使用的启动应用。

提供的应用程序之一是Ionic应用程序,该应用程序在浏览器(Soti Surf)中打开链接,但这会带来2个问题。

代码

HTML:

<div (click)="$ctrl.doTheThing()"> something </div>

JS:

private doTheThing() {
    this.inAppBrowser.create('surfs://' + url.replace(/^(https?:|)\/\//, ''), '_system');
}

第一期

首先,当我使用android后退按钮时,单击似乎不再起作用(我已在doTheThing函数的第一行中添加了警报,但未显示任何内容)。 该应用程序中的其他按钮似乎工作正常,当使用切换应用程序按钮时,它也可以工作

我尝试过:

  • preventDefault()
  • stopPropagation()
  • 使用tappable属性
  • (tap)而非(click)

,但似乎没有任何作用。有人有解决此问题的想法吗?

第二个问题

注意:这不太重要 当打开链接时,它会记住最后一页(在soti浏览中),因此,使用后退箭头,它会首先导航到最后一个链接,当没有更多后退位置时,它将返回到应用程序

我尝试过:

  • 使用inAppBrowser.create()的返回值并在返回我的应用程序时调用close()

版本信息

  • @ ionic-native / core版本:4.16.0
  • cordova-android:7.1.4
  • cordova -v:8.1.2(cordova-lib@8.1.1)
  • npm -v:6.4.1
  • ionic:4.12.0
  • nodeJS:11.1.0

1 个答案:

答案 0 :(得分:0)

在离子方面,您可以使用Navbar类并使用生命周期挂钩方法来阻止设备后退按钮

这是一个样本

ionViewDidLoad() {
  this.navBar.backButtonClick = (e: UIEvent) => {
        // todo something
         if (condition ) 
        {
            this.getSaveDialog();
        } else{
                this.navCtrl.pop();
        }
    })
 }

要在应用中的 Appbrowser 中打开,将失去对事件的控制,您无法跟踪和管理 页面状态。 可以通过浏览器进行维护。您需要在正在

中打开的应用程序中放置黑客或其他方法