问题描述
TokenRouter v0.1.268 的管理端顶部版本入口存在交互回归:
- 点击版本标签(例如
v0.1.268)会跳转到 /home,升级弹窗无法正常打开。
- 通过控制台临时打开升级弹窗后,点击
Update Now 仍会跳转到 /home。
受影响版本:v0.1.268
已修复版本:v0.1.269
复现步骤
- 以管理员身份进入管理端。
- 点击顶部品牌名称下方的版本标签。
- 页面跳转到首页,而不是仅打开版本升级弹窗。
- 即使临时打开弹窗,点击
Update Now 也会触发相同跳转。
原因
v0.1.268 的 AppHeader.vue 使用指向 /home 的 router-link 包裹了整个品牌区域,其中还包含 VersionBadge 及其内部按钮。
版本标签和 Update Now 的点击事件会继续冒泡到外层 router-link,因此 Vue Router 接管点击并跳转首页。该结构同时形成了链接内嵌交互按钮的问题。
修复
v0.1.269 已将品牌图标、品牌名称链接与 VersionBadge 拆分,版本组件不再位于首页链接内部。
相关修复提交:633ad349f
v0.1.268 临时解决方案
先在浏览器控制台执行以下代码打开升级弹窗:
(() => {
const button = [...document.querySelectorAll('header button, button')].find((el) =>
/^v?\d+(?:\.\d+){2}\b/.test((el.textContent || '').replace(/\s+/g, ' ').trim())
)
if (!button) {
console.warn('未找到版本按钮:请确认当前账号是管理员,并等待页面加载完成。')
return
}
const root = button.closest('.relative')
const isOpen = () => Boolean(root?.querySelector('div.absolute'))
if (!isOpen()) {
// 先让 Vue 打开弹窗,再阻止旧版首页链接继续跳转。
button.addEventListener(
'click',
(event) => {
event.preventDefault()
event.stopPropagation()
},
{ once: true }
)
button.click()
}
setTimeout(() => {
if (!isOpen()) {
// 兜底调用 Vue 组件方法。
const vm = button.__vueParentComponent?.ctx
if (typeof vm?.toggleDropdown === 'function') vm.toggleDropdown()
}
console.info(isOpen() ? '升级弹窗已打开' : '弹窗仍未打开')
}, 0)
})()
弹窗出现后,再执行以下代码:
(() => {
const button = [...document.querySelectorAll('button')].find((el) => {
const text = (el.textContent || '').replace(/\s+/g, ' ').trim().toLowerCase()
return /^(update now|立即更新|现在更新|更新)/.test(text) &&
el.getClientRects().length > 0
})
if (!button) {
console.warn('未找到 Update Now 按钮,请先打开版本升级弹窗。')
return
}
// 让 Vue 的升级逻辑先执行,再阻止旧版首页链接接管点击。
button.addEventListener(
'click',
(event) => {
event.preventDefault()
event.stopPropagation()
},
{ once: true }
)
console.info('已修复本次点击,现在点击 Update Now 即可升级。')
})()
最后手动点击一次 Update Now。升级过程中不要重复点击。
问题描述
TokenRouter
v0.1.268的管理端顶部版本入口存在交互回归:v0.1.268)会跳转到/home,升级弹窗无法正常打开。Update Now仍会跳转到/home。受影响版本:
v0.1.268已修复版本:
v0.1.269复现步骤
Update Now也会触发相同跳转。原因
v0.1.268的AppHeader.vue使用指向/home的router-link包裹了整个品牌区域,其中还包含VersionBadge及其内部按钮。版本标签和
Update Now的点击事件会继续冒泡到外层router-link,因此 Vue Router 接管点击并跳转首页。该结构同时形成了链接内嵌交互按钮的问题。修复
v0.1.269已将品牌图标、品牌名称链接与VersionBadge拆分,版本组件不再位于首页链接内部。相关修复提交:
633ad349fv0.1.268 临时解决方案
先在浏览器控制台执行以下代码打开升级弹窗:
弹窗出现后,再执行以下代码:
最后手动点击一次
Update Now。升级过程中不要重复点击。