当前位置: 首页 > 知识库问答 >
问题:

Ionic 3-防止浏览器关闭

王兴腾
2023-03-14

当用户试图关闭页面时(单击浏览器窗口上的X按钮或离开页面),我需要发送一条消息,如“确定吗?”并执行一些操作。

我正在使用离子3,这是我的配置

cli包:(/home/ubuntu/workspace/mHS/node_modules)

@ionic/cli-utils  : 1.12.0
ionic (Ionic CLI) : 3.12.0

全球套餐:

cordova (Cordova CLI) : 7.0.1 

本地套餐:

@ionic/app-scripts : 3.0.0
Cordova Platforms  : android 6.3.0 browser 4.1.0 ios 4.4.0
Ionic Framework    : ionic-angular 3.7.1

系统:

Node : v6.11.2
npm  : 5.3.0 
OS   : Linux 4.9

杂项:

backend : legacy

我尝试了不同的方法,但没有成功:

1-离子生命周期钩

import { Component, ViewChild } from '@angular/core';
import { NavController, Events, LoadingController, Platform } from 'ionic-angular';

@Component({
  selector: 'page-signup',
  templateUrl: 'signup.html'
})

export class SignupPage {

....

ionViewWillUnload() {
    console.log("I'm about to unload");
  }

}

2-主机侦听器

import { Component, HostListener, ViewChild } from '@angular/core';
import { NavController, Events, LoadingController, Platform } from 'ionic-angular';
...
@Component({
  selector: 'page-signup',
  templateUrl: 'signup.html'})

export class SignupPage {

  @HostListener('window:beforeunload', ['$event'])
   handler(event: Event) {
    console.log('event logged')
  }

...

}

3-超文本标记语言

<ion-header>
    <ion-navbar>
        <ion-title>{{pageTitle}}</ion-title>
    </ion-navbar>
</ion-header>

<ion-content onbeforeunload="myScript()">
....
</ion-content>

我错过了什么?

共有1个答案

宇文飞翮
2023-03-14

解决方案是第2个-主机侦听器;我忘记返回布尔值。这种方式非常有效。

export class SignupPage {

  @HostListener('window:beforeunload', ['$event'])
  onbeforeunload(event) {
      return this.signupCompleted;
    }
  }
  signupCompleted = false;
...
}
 类似资料:
  • 问题内容: 我尝试使用以下代码在关闭浏览器窗口时收到警报: 它可以工作,但是如果页面包含一个超链接,则单击该超链接会引发相同的警报。仅在关闭浏览器窗口时才需要显示警报,而在单击超链接时则不需要。 问题答案: 保持您的代码不变,并使用jQuery处理链接:

  • 问题内容: 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。客户要求我这样做。 我尝试了HTML表单和密码字段中的属性。但它无法在最新的浏览器(例如Chrome 55,Firefox 38+,IE 11等)中运行。 最好的解决方案是什么? 问题答案: 感谢您给我回复。我点击了以下链接 禁用浏览器的“保存密码”功能 我通过仅在输入中添加&属性来解决此问题,如下所示

  • 问题内容: 好像我使用加载动态内容,结果缓存在浏览器中。 在QueryString中添加一些随机字符串似乎可以解决此问题(我使用),但这听起来像是一种hack。 还有其他方法可以做到这一点吗?或者,如果唯一字符串是实现此目标的唯一方法,则除之外还有其他建议吗? 问题答案: 我使用,这将避免冲突,除非您在同一毫秒内发生多个请求: 编辑: 这个答案已经好几年了。它仍然有效(因此我没有删除它),但是 现

  • 问题内容: 所以我正在做这个小项目,但是在捕捉方面有些麻烦。不能正常工作的一件事是,浏览器一直在缓存包含保存数据的json文件,当我在其他地方更新json时,浏览器会返回到已缓存的json文件的旧版本并读取该旧版本。不幸的是我不想要那个。我根本不希望浏览器完全缓存文件,以便每次加载页面时,它将向服务器请求json文件并根据该文件而不是已缓存的任何文件进行操作。但是,我希望能够缓存页面上的所有其他内

  • 通常情况下,您使用selenium来自动化测试用例,在测试用例运行完毕后,浏览器关闭。 然而,我尝试使用selenium webdriver编写特定任务的脚本,例如登录到特定页面,但浏览器在登录后应保持打开状态。 我开发了门户,这样,如果我早上开始工作,我就不必登录所有的后端,我只需要登录一次我的门户,从那里我就可以触发我需要的一切。 我这样做是为了登录到typo3后端(片段): 您可以看到,我在

  • 问题内容: 如何防止使用JavaScript浏览网页? 问题答案: 使用可以显示消息,但不会中断导航(因为为时已晚)。但是,使用会中断导航: 注意:返回空字符串,因为较新的浏览器提供了诸如“任何未保存的更改将丢失的信息”之类的消息,这些消息不能被覆盖。 在较旧的浏览器中,您可以指定要在提示中显示的消息: