关闭一个页面,同时刷新前一个页面

本文介绍了一种在浏览器窗口间进行交互的方法,特别是在窗口2处理完事件后如何关闭自身并触发窗口1的自动刷新。通过使用`window.opener.location.reload();self.close();`语句实现这一目标。

需求:根据窗口1打开了窗口2,然后当窗口2处理完事件之后,需要关闭窗口2并自动刷新窗口1。

实现语句:

window.opener.location.reload();
self.close();


ok完事!

### Vue 中关闭页面刷新其他页面的实现方法 在 Vue 应用中,要实现关闭页面同时刷新一个页面的功能,可以通过多种方式来完成。以下是几种常见的解决方案及其适用场景。 #### 方法一:利用 `window.opener` 实现跨窗口通信 当从一个页面 A 打开一个新的页面 B 时,可以在页面 B 使用 `window.opener` 来访问页面 A 的 `window` 对象,并调用其上的方法或直接操作 DOM[^1]。具体实现如下: ```javascript // 页面B中的逻辑 function closeAndRefreshParent() { if (window.opener && !window.opener.closed) { // 调用父页面的方法或者强制刷新页面 window.opener.location.reload(); // 刷新页面 } window.close(); // 关闭页面 } ``` 此方法适用于父子页面之间的交互,其中子页面可以主动通知父页面进行某些操作。 --- #### 方法二:通过事件监听机制(`visibilitychange`) 如果希望由旧页面自行监控状态变化,则可在旧页面绑定 `visibilitychange` 事件,在检测到焦点返回至该页面时自动触发数据更新逻辑[^1]。例如: ```javascript // 页面A中的逻辑 document.addEventListener('visibilitychange', function () { if (!document.hidden) { console.log("Page is now visible"); refreshData(); // 自定义的数据刷新函数 } }); function refreshData() { // 发起 API 请求或其他业务处理 fetch('/api/data') .then(response => response.json()) .then(data => { console.log("Updated data:", data); }); } ``` 这种方法无需依赖新开页面的操作行为,而是完全基于原生浏览器特性实现自动化管理。 --- #### 方法三:结合路由守卫与全局事件总线 对于单页应用(SPA),推荐采用更优雅的方式——即借助 Vue Router 提供的能力以及自定义事件广播系统[^2]。比如设置导航离开确认对话框(`beforeRouteLeave`) 或者捕获全局范围内的特定信号源(如 WebSocket 消息推送)。 另外还可以考虑引入 Vuex 存储共享状态信息以便多个组件间同步最新改动情况。 --- #### 方法四:使用 `onbeforeunload` 和 `unload` 处理退出动作 为了区分用户究竟是打算刷新还是彻底结束浏览进程,我们能够分别附加处理器给这两个阶段性的生命周期钩子函数[^3]: ```javascript export default { mounted() { window.onbeforeunload = () => {}; window.unload = () => { notifyOtherTabToRefresh(); }; }, destroyed() { window.onbeforeunload = null; window.unload = null; } }; function notifyOtherTabToRefresh() { localStorage.setItem('refreshSignal', Date.now()); } setInterval(() => { const signalTime = parseInt(localStorage.getItem('refreshSignal'), 10); if (signalTime && new Date().getTime() - signalTime < 1000 * 60 /* timeout */) { location.reload(); localStorage.removeItem('refreshSignal'); } }, 1000); // Check every second ``` 这里运用到了本地存储作为中介传递消息的作用原理。 --- ### 总结 以上列举了几种不同的技术手段用于达成目标效果,开发者应根据实际应用场景灵活选用最合适的方案组合起来满足复杂需求下的功能扩展可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值