javascript监听页面刷新和页面关闭事件方法详解

发布时间 - 2026-01-10 22:24:06    点击率:

在我们的日常生活中,时常遇到这么一种情况,当我们在点击一个链接、关闭页面、表单提交时等情况,会提示我们是否确认该操作等信息。

这里就给大家讲讲javascript的onbeforeunload()和onunload()两个事件。

相同点:

两者都是在对页面的关闭或刷新事件作个操作。

不同点:

  1. unbeforeunload()事件执行的顺序在onunload()事件之前发生。(因为,unbeforeunload()是在页面刷新之前触发的事件,而onubload()是在页面关闭之后才会触发的)。
  2. unbeforeunload()事件可以禁止onunload()事件的触发。
  3. onunload()事件是无法阻止页面关闭的。
  4. 浏览器的兼容

onunload:

IE6,IE7,IE8 中 刷新页面、关闭浏览器之后、页面跳转之后都会执行;

IE9 刷新页面 会执行,页面跳转、关闭浏览器不能执行;

firefox(包括firefox3.6) 关闭标签之后、页面跳转之后、刷新页面之后能执行,但关闭浏览器不能执行;

Safari 刷新页面、页面跳转之后会执行,但关闭浏览器不能执行;

Opera、Chrome 任何情况都不执行。

onbeforeunload:

IE、Chrome、Safari 完美支持

Firefox 不支持文字提醒信息

Opera 不支持

IE6,IE7会出现bug  

示例代码:

onbeforeunload():

方式一:html元素中添加

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body onbeforeunload="return myFunction()">
<p>该实例演示了如何向 body 元素添加 "onbeforeunload" 事件。</p>
<p>关闭当前窗口,按下 F5 或点击以下链接触发 onbeforeunload 事件。</p>
<a href="http://www.qqtimezone.top">博客地址</a>  
<script>
function myFunction() {
 return "自定义内容";
}
</script>
</body>
</html>

方式二:javascript中添加

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>该实例演示了如何使用 HTML DOM 向 body 元素添加 "onbeforeunload" 事件。</p>
<p>关闭当前窗口,按下 F5 或点击以下链接触发 onbeforeunload 事件。</p>
<a href="http://www.runoob.com">点击调整到菜鸟教程</a>
<script>
window.onbeforeunload = function(event) {
 event.returnValue = "我在这写点东西...";
};
</script>
</body>
</html>

方式三:添加addEventListener()事件(不过此方法IE8以下不支持)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p>该实例演示了如何使用 addEventListener() 方法向 body 元素添加 "onbeforeunload" 事件。</p>
<p>关闭当前窗口,按下 F5 或点击以下链接触发 onbeforeunload 事件。</p>
<a href="http://www.qqtimezone.top">跳转地址</a>
<script>
window.addEventListener("beforeunload", function(event) {
 event.returnValue = "我在这写点东西...";
});
</script>
</body>
</html>

onunload():

方式一:html元素中添加

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <script type="text/javascript">
  function fun() {
   // dosomethings
  }
 </script>
</head>
<body onunload="fun()">
</body>
</html>

方式二:javascript添加

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <script type="text/javascript">
 window.onunload = function() {
  // dosomethings
 };
 </script>
</head>
<body>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 刷新  # 关闭  # js事件监听器用法实例详解  # js事件监听机制(事件捕获)总结  # JS 事件绑定、事件监听、事件委托详细介绍  # js监听键盘事件示例代码  # 两种js监听滚轮事件的实现方法  # JavaScript中的事件监听详细介绍  # 跳转  # 关闭浏览器  # 不支持  # 按下  # 是在  # 菜鸟  # 在这  # 点击以下  # 如何使用  # 写点  # 都是  # 都不  # 才会  # 自定义  # 在对  # 当我们  # 后会  # 表单  # 就给  # 作个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何自定义建站之星模板颜色并下载新样式?  jQuery validate插件功能与用法详解  ,怎么在广州志愿者网站注册?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何有效防御Web建站篡改攻击?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  如何快速配置高效服务器建站软件?  浅析上传头像示例及其注意事项  php 三元运算符实例详细介绍  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  高端智能建站公司优选:品牌定制与SEO优化一站式服务  MySQL查询结果复制到新表的方法(更新、插入)  如何快速搭建自助建站会员专属系统?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何快速搭建高效可靠的建站解决方案?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何用已有域名快速搭建网站?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  香港服务器租用费用高吗?如何避免常见误区?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  如何快速辨别茅台真假?关键步骤解析  如何获取免费开源的自助建站系统源码?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何在云虚拟主机上快速搭建个人网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何在Ubuntu系统下快速搭建WordPress个人网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在Tomcat中配置并部署网站项目?  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Mybatis 中的insertOrUpdate操作  利用python获取某年中每个月的第一天和最后一天  如何用VPS主机快速搭建个人网站?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何在自有机房高效搭建专业网站?  Laravel如何配置Horizon来管理队列?(安装和使用)  详解Android图表 MPAndroidChart折线图  Laravel如何实现API资源集合?(Resource Collection教程)  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率