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

如何实现仅在弹窗关闭时重定向父窗口而非页面跳转时?

解决方案

问题核心是页面正常跳转时也会触发unload事件,导致父窗口被意外重定向。我们可以通过添加状态标记区分「正常页面跳转」和「用户关闭弹窗」两种场景,既保留fetch.then的预加载逻辑,又能实现仅关闭弹窗时重定向父窗口:

修改后的代码如下:

<script type="text/javascript">
    // 初始化状态标记:默认非正常导航
    let isNormalNavigation = false;

    function navigate() {
        // 标记为正常导航
        isNormalNavigation = true;
        window.location.href = "{{ next_page }}";
    }
    fetch("{{ next_page }}").then(navigate);
</script>

<script type="text/javascript">
    window.addEventListener("unload", function() {
        // 仅当用户关闭弹窗时(非正常导航),才重定向父窗口
        if (!isNormalNavigation) {
            window.opener.location.replace("some-link");
        }
    })
</script>

逻辑说明

  • 当fetch预加载完成触发navigate时,先将isNormalNavigation设为true,再执行页面跳转。此时unload事件触发后,判断条件不成立,不会修改父窗口地址。
  • 如果用户直接关闭弹窗,isNormalNavigation始终保持false,unload事件就会执行父窗口的重定向操作。

内容的提问来源于stack exchange,提问作者Jules

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:50:22