如何实现仅在弹窗关闭时重定向父窗口而非页面跳转时?
解决方案
问题核心是页面正常跳转时也会触发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
相关产品推荐
相关产品推荐

