浏览器窗口关闭事件

网页刷新关闭限制技巧

<html>
<head>
<title></title>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<SCRIPT language=JavaScript>
<!--
var currentKeyCode = -1;

function document.onkeydown() {           // 本窗口的所有下属页面都必须含有本函数

      top.currentKeyCode = event.keyCode;
}

function window.onbeforeunload() {

      var sw = 0, s0 = "";
      if (currentKeyCode == 116) {s0 += "刷新窗口!(F5)";}
      else {if ((event.altKey)&&(currentKeyCode == 115)) {s0 += "关闭窗口!(alt+F4)"; sw = 1;}
            else {if ((event.clientX > 0)&&(event.clientX < document.body.clientWidth)) {s0 += "刷新窗口!";}
                  else {s0 += "关闭窗口!"; sw = 1;}
            }
      }
      if (sw == 1) {event.returnValue = "";}
      else {currentKeyCode = -1;}
}

//-->
</SCRIPT>
</head>
<body>
有关刷新和关闭
</body>
</html>

在不同的开发场景中,有多种方法可以监听浏览器窗口关闭事件: ### JavaScript 原生方法 可以使用 `window.onbeforeunload` 事件来监听浏览器窗口关闭或页面刷新事件。若要阻止关闭并弹出确认弹窗,可按如下操作: ```javascript window.onbeforeunload = function(e) { var e = window.event || e; e.returnValue = "确认关闭页面吗?"; }; ``` 此代码在用户尝试关闭页面或刷新时,会弹出确认对话框,询问用户是否真的要关闭页面 [^1]。 还能通过 `window.onbeforeunload` 事件判断是关闭网页还是刷新页面: ```javascript window.onbeforeunload = function (event) { if (event.clientX > document.body.clientWidth && event.clientY < 0 || event.altKey) { console.log("你关闭浏览器"); } else { console.log("你正在刷新页面"); } }; ``` 这里通过判断鼠标位置和是否按下 `ALT` 键,来区分是关闭操作还是刷新操作 [^2]。 ### jQuery 方法 使用 jQuery 可以通过 `$(window).on('beforeunload')` 来监听页面关闭事件: ```javascript $(window).on('beforeunload', function(event) { event.preventDefault(); event.returnValue = '是否确定关闭页面?关闭后已经完成的题目不会保存!'; }); ``` 若要注销页面关闭的监听事件,可使用 `$(window).off('beforeunload')`,若要关闭页面,可使用 `window.close()` [^3]。 ### Vue 项目中监听 在 Vue 项目里,可在 `mounted` 钩子中添加 `window.onbeforeunload` 事件监听: ```javascript export default { mounted() { window.onbeforeunload = (e) => { // 在这里添加关闭或刷新时要执行的操作 console.log('页面即将关闭或刷新'); return '确认关闭页面吗?'; }; }, beforeDestroy() { // 销毁前移除事件监听,防止内存泄漏 window.onbeforeunload = null; } }; ``` 此代码在 Vue 组件挂载时添加事件监听,在组件销毁前移除监听,避免内存泄漏 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值