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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
理解Javascript_09_Function与Object
Oct 16 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
JS解决ie6下png透明的方法实例
Aug 02 Javascript
js中的replace方法使用介绍
Oct 28 Javascript
jQuery Ajax()方法使用指南
Nov 19 Javascript
js如何改变文章的字体大小
Jan 08 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
使用vue打包进行云服务器上传的问题
Mar 02 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 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 图片上传类代码
2009/07/17 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
Python实现的端口扫描功能示例
2018/04/08 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
利用python进行文件操作
2020/12/04 Python
python温度转换华氏温度实现代码
2020/12/06 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
计算机相关专业自荐信
2014/07/02 职场文书
合作协议书模板
2014/10/10 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
导游词之湖北武当山
2019/09/23 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android