如何在JavaScript中检测窗口是刷新还是关闭?ASPX页面适配
区分页面关闭/刷新并执行对应逻辑
要实现只在页面关闭时刷新父页面并关闭子页面,刷新时不执行操作,可以通过以下方式处理:
浏览器没有直接提供区分页面关闭和刷新的API,但可以结合beforeunload事件和导航类型判断来实现近似需求,具体代码如下:
<script type="text/javascript"> // 标记页面是否为关闭状态 let isPageClosing = false; // 监听页面卸载前事件 window.addEventListener('beforeunload', function(e) { // 判断导航类型:0=首次加载,1=刷新,2=前进/后退 const navType = performance.navigation ? performance.navigation.type : performance.getEntriesByType('navigation')[0]?.type; // 如果不是刷新操作,则标记为关闭状态 if (navType !== 1 && navType !== 'reload') { isPageClosing = true; } }); function refreshparent(){ if(isPageClosing){ window.opener.location.reload(true); window.close(); } // 刷新时不执行任何操作 } </script>
补充说明:
performance.navigation.type是旧版API,部分现代浏览器已改用performance.getEntriesByType('navigation')[0].type,代码中做了兼容处理。- 这种方式并非100%精准(部分浏览器刷新时的判断可能存在差异),但能覆盖大部分常规场景。
- 确保ASPX页面的
body标签上的onunload绑定该函数:<body onunload="refreshparent()">
内容的提问来源于stack exchange,提问作者Pablo Bongiolatti
相关产品推荐
相关产品推荐

