亩地免安装绿色中文版
2.33G · 2025-10-21
点赞 + 收藏 === 学会???
主系统单点登录点击触发window.open()
打开本系统。
是发布生产后的新需求:要求退出登录后直接关闭当前系统页面
。
本地运行
增加了window.close()
方法实现功能,点击
退出后页面没反应
。
官方解析中说明,window.close() 方法只能关闭由window.open()或者浏览器直接输入url打开的页面,其余情况安全考虑是被限制的。
于是保持原本退出登录的window.close()
方法不变, 尝试增加打开按钮,点击后调用window.open()打开系统链接。
<template> // ......其他代码 <a href="javascript:;" @click="logout">退出</a> <a href="javascript:;" @click="logopen">打开</a></template><script setup>function logout() { ElMessageBox.confirm('确定注销并退出系统吗?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { userStore.logOut().then((redirect) => { window.close() // 使用close方法关闭 location.href = redirect || ((import.meta.env.VITE_PUBLIC_PATH) + '/index'); })}).catch(() => { });}function logopen() { window.open('http://localhost/web/index') // 使用open方法打开}</script>
尝试结果:
打开、退出功能全部正常
。
点击打开按钮,跳转到本地运行的此系统页面。
点击退出按钮,打开的页面关闭,并且基础的退出清除功能还在。
判断: 主系统的打开方式没有问题,需要把焦点集中在此系统的window.close()失效上。
在搜索时发现了处理办法,先打开空白窗口触发window.open(),再close,试一下。
function logout() { ElMessageBox.confirm('确定注销并退出系统吗?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { userStore.logOut().then((redirect) => { window.open("about:blank","_self") // 先打开一个空白窗口 window.close() // 使用close方法关闭 location.href = redirect || ((import.meta.env.VITE_PUBLIC_PATH) + '/index'); })}).catch(() => { });}
尝试结果: 无效。
在本地环境下的尝试都不成功的情况下,猜测是否跟环境有关,尝试调试线上代码。
根据退出功能中的提示词确定注销并退出系统吗?
找到线上代码中退出按钮的所在文件
点击退出,页面关闭。
⚠️Tips:
必须要打开调试器 --- 之前替换的内容才会生效。
在调试完成后,务必清除配置,以免对后续产生不必要的影响。
由此可得,window.open()的失效跟环境有关,待部署后的再测试。
十铨推出 NV10000 固态硬盘:M.2 2280 PCIe 5.0×4 NVMe,10G 顺序读取
卢伟冰宣布陈奕迅成为 REDMI 声学大使,K90 Pro Max 手机搭载 2.1 立体声系统