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 相关文章推荐
javascript检查日期格式的函数[比较全]
Oct 17 Javascript
javascript下判断一个元素是否存在的代码
Mar 05 Javascript
javascript getElementsByClassName函数
Apr 01 Javascript
关于Javascript与iframe的那些事儿
Jul 04 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
Jan 06 Javascript
JS中判断null、undefined与NaN的方法
Mar 24 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
详解JS面向对象编程
Jan 24 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
JavaScript字符串对象
Jan 14 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 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 选项及相关信息函数库
2006/12/04 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python实现Adapter模式实例代码
2018/02/09 Python
对Python _取log的几种方式小结
2019/07/25 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
python 操作excel表格的方法
2020/12/05 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
2013年大学生的自我鉴定
2013/10/24 职场文书
机械设计专业应届生求职信
2013/11/21 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
搞笑爱情保证书
2014/04/29 职场文书
2014年生产部工作总结
2014/12/17 职场文书
实名检举信范文
2015/03/02 职场文书