在码砖的时候,发现一个有意思的东西,就是在浏览器窗口刷新或者关闭的时候,修改的数据还没有保存就扑该了,这时有一个浏览器窗口事件是可以触发使用的,那就是

window.onbeforeunload = function(event) {
    e = e || window.event;
    // 兼容IE8和Firefox 4之前的版本
    if (e) {
        e.returnValue = '关闭提示';

文档中提到,此函数在低版本的浏览器中使用,某些浏览器还不支持。

在Angular中使用时,可以HostListener注解来监听DOM事件

  @HostListener('window:beforeunload', ['$event'])
  onBeforeUnload(event: BeforeUnloadEvent) {
    if (this.isChanged) { // 不是什么东西都能进来的,手动控制进出口
      return false;
    return true;

文档中说到,使用 returnValue 或返回字符串的方法自定义提示信息已被弃用,大部分浏览器将不再支持,所以你想设置任何的提示信息都没有用了,浏览器开发者不允许。

在这里可以使用布尔返回值设置是否不经过确认就重载页面,返回值为true就不会弹出此窗口。

参考文档:

window.onbeforeunload - Web API 接口参考 | MDN

Window: beforeunload event - Web API 接口参考 | MDN

添加PopoutWindowModule到imports你的阵列@NgModule : import { PopoutWindowModule } from 'angular-popout-window'; @NgModule({ imports: [ PopoutWindowModule ... ], 在你的 html 中用<popout>标签包裹你的内容,并给它一个名字,以便它可以被引用:
最近做的系统中,有消息管理的功能,点击某条记录查看消息详情,可以展示消息发出人、发送间、上传的附件等,都是很常规的功能,页面写的差不多项目经理又提出一个要求:因为发消息有多个收件人,能不能显示两个按钮,点击后弹出弹窗,分别展示已经读了消息的收件人和未读消息的收件人? what could I say??!!!You happy is ok 果真搬运代码的速度跟不上项目经理的脑洞。已读和未读...
<div class="ngdialog-title">{{ngDialogData.title}}</div> <div class="ngdialog-message" bindonce> <div class="select-group-user-container"> <div class="left">
angular刷新或离开页面提示用户保存数据 最近收到产品提的这样一个需求,用户在页面操作完成后若用户不小心刷线了页面或者点了后退,这阻止用户的操作并提示用户数据还未保存。 话不多说上代码 可以这样写 ngOnInit(): void { window.onbeforeunload = (event) => { (event || window.event).returnValue = '还未保存是否离开'; // 这里写关闭需要处理的间,刷新也会执行这里的方法
前端间在做项目的候,用到了angularjs,期间,发现了一个奇葩的问题,就是在IE11浏览器下,点击下方图1上箭头所示的位置,将此处的开关变为图2中箭头所示的样子,但是发觉没有反应,开关还是灰色的,只有打开F12开发者工具的候,开关按钮就变为绿色打开状态了。 后来发现在F12没有打开点击按钮后台请求成功后,重新获取列表的请求根本没有发送,也就是说get请求不发送,究其...
在Ionic-Angular应用中,可以使用Cordova插件来请求设备权限。在Android平台上,可以使用Cordova-plugin-android-permissions插件来请求权限。 首先,使用以下命令安装插件: ionic cordova plugin add cordova-plugin-android-permissions npm install @ionic-native/android-permissions 接下来,在您的组件中导入AndroidPermissions模块,并将其注入到构造函数中: import { AndroidPermissions } from '@ionic-native/android-permissions/ngx'; constructor(private androidPermissions: AndroidPermissions) { } 然后,您可以使用以下代码请求设备权限: this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then( result => console.log('Has permission?',result.hasPermission), err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA) 上面的代码检查是否已经授予相机权限,如果没有,会弹出一个权限请求框。 请注意,您需要在AndroidManifest.xml文件中添加所需的权限。您可以使用config.xml文件中的<config-file>标记在Ionic-Angular应用程序中添加权限。例如,要添加相机权限,请在config.xml文件中添加以下内容: <platform name="android"> <config-file parent="/*" target="AndroidManifest.xml"> <uses-permission android:name="android.permission.CAMERA" /> </config-file> </platform> 这将在应用程序安装在AndroidManifest.xml文件中添加相机权限。