js实现关闭网页出现是否离开提示


Posted in Javascript onDecember 07, 2017

js实现关闭网页出现是否离开提示

大家是否经常遇到在关闭网页的时候,会看到一个确定是否离开当前页面的提示框?想一些在线测试系统、信息录入系统等就经常会有这一些提示,避免用户有意或者无意中关掉了页面,导致数据丢失。这里面的实现过程很简单,利用了HTML DOM事件中的onunload和onbeforeunload方法。

unload 事件属性

定义:当用户卸载文档时执行一段 JavaScript,例如:

// body
<body onunload="goodbye()">//window
window.onbeforeunload=function(e){     

var e = window.event||e;  

e.returnValue=("确定离开当前页面吗?");
} 

用法:当用户离开页面时,会发生 unload 事件。注意:如果您重载页面,也会触发 unload 事件(以及 onload 事件)。 

触发于:

关闭浏览器窗口通过地址栏或收藏夹前往其他页面的时候点击返回,前进,刷新,主页其中一个的时候点击 一个前往其他页面的url连接的时候调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit. 当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。重新赋予location.href的值的时候。通过input type="submit"按钮提交一个具有指定action的表单的时候。 onbeforeunload 事件属性

定义:在即将离开当前页面(刷新或关闭)时执行 JavaScript,例如:

//body
<body onbeforeunload="goodbye()">
//window
window.onbeforeunload=function(e){     
var e = window.event||e;  

e.returnValue=("确定离开当前页面吗?");
} 

用法:onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 "确定要离开此页吗?"。该信息不能删除。但你可以自定义一些消息提示与标准信息一起显示在对话框。注意: 在 Firefox 浏览器中,只显示默认提醒信息(不显示自定义信息)。

触发于: 

关闭浏览器窗口  通过地址栏或收藏夹前往其他页面的时候  点击返回,前进,刷新,主页其中一个的时候  点击 一个前往其他页面的url连接的时候  调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.  当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。  重新赋予location.href的值的时候。  通过input type=”submit”按钮提交一个具有指定action的表单的时候。

 浏览器支持程度

目前主流浏览器都支持这两个事件属性

 js实现关闭网页出现是否离开提示

概述

onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 onbeforeunload也是在页面刷新或关闭时调用,onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。onunload是无法阻止页面的更新和关闭的,而 onbeforeunload 可以做到。

附:

页面加载时只执行onload 

页面关闭时先执行onbeforeunload,最后onunload 

页面刷新时先执行onbeforeunload,然后onunload,最后onload  

附上部分效果图:

绑定body标签的代码:

<!DOCTYPE html>
 <head>
  <meta charset="UTF-8">
  <title>测试</title>
  <script>
  function checkLeave(){
  

event.returnValue="确定离开当前页面吗?";
  
}
 
</script>
 </head>
 <body onbeforeunload="checkLeave()">
  测试
 </body>
</html>

谷歌浏览器下的效果:

点击刷新按钮:

js实现关闭网页出现是否离开提示

点击返回按钮:

js实现关闭网页出现是否离开提示

通过任务栏或者收藏夹前往其他界面:

js实现关闭网页出现是否离开提示

关闭页面:

js实现关闭网页出现是否离开提示

edge下的效果:

点击刷新按钮:

js实现关闭网页出现是否离开提示

点击返回按钮:

js实现关闭网页出现是否离开提示

关闭页面:

js实现关闭网页出现是否离开提示

 注:在新版的火狐浏览器(我是用的版本: 57.0 )里面,上面这种写法不生效?!

绑定window对象的代码:

<!DOCTYPE html>
 <head>
  <meta charset="UTF-8">
  <title>测试</title>
  <script>
  window.onbeforeunload=function(e){  
   
var e = window.event||e; 
   
e.returnValue=("确定离开当前页面吗?");
   } 
 
</script>
 </head>
 <body>
  测试
 </body>
</html>

火狐下的效果:

点击刷新按钮:

js实现关闭网页出现是否离开提示

点击返回按钮:

js实现关闭网页出现是否离开提示

关闭页面:

 js实现关闭网页出现是否离开提示

注:这种方法在谷歌浏览、edge浏览器下仍适用,效果与第一种一样!

Javascript 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
Oct 06 Javascript
JS运动基础框架实例分析
Mar 03 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
Oct 30 Javascript
jqPlot jQuery绘图插件的使用
Jun 18 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
探索Vue高阶组件的使用
Jan 08 Javascript
js中如何完美的解析数据
Mar 18 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
React Native中Mobx的使用方法详解
Dec 04 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
Javascript中window.name属性详解
Nov 19 Javascript
JavaScrip关于创建常量的知识点
Dec 07 #Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 #Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 #Javascript
jQuery实现简单的下拉菜单导航功能示例
Dec 07 #jQuery
vue中路由参数传递可能会遇到的坑
Dec 07 #Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 #Javascript
面包屑导航详解
Dec 07 #Javascript
You might like
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
python中List的sort方法指南
2014/09/01 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Sanic框架路由用法实例分析
2018/07/16 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
公立医院改革实施方案
2014/03/14 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
个人四风问题整改措施
2014/10/24 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript