You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:45:44