在码砖的时候,发现一个有意思的东西,就是在浏览器窗口刷新或者关闭的时候,修改的数据还没有保存就扑该了,这时有一个浏览器窗口事件是可以触发使用的,那就是
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文件中添加相机权限。