2021-10-20 10:59:36 +08:00
|
|
|
let target
|
2021-10-20 01:11:27 +08:00
|
|
|
|
2021-10-20 10:59:36 +08:00
|
|
|
function clearTarget () {
|
|
|
|
if (!target) {
|
|
|
|
return
|
|
|
|
}
|
2021-10-20 01:11:27 +08:00
|
|
|
|
2021-10-20 10:59:36 +08:00
|
|
|
delete target.dataset.target
|
|
|
|
}
|
|
|
|
|
2021-10-22 01:08:42 +08:00
|
|
|
export default ({ app }) => {
|
2021-10-20 10:59:36 +08:00
|
|
|
document.documentElement.addEventListener('click', clearTarget)
|
2021-10-20 01:11:27 +08:00
|
|
|
|
|
|
|
app.router.afterEach(to => {
|
2021-10-20 10:59:36 +08:00
|
|
|
clearTarget()
|
|
|
|
|
2021-10-20 01:11:27 +08:00
|
|
|
if (!to.hash) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
const selector = decodeURIComponent(to.hash)
|
|
|
|
const anchor = document.querySelector(selector)
|
2021-10-21 18:38:51 +08:00
|
|
|
if (!anchor) {
|
|
|
|
return
|
|
|
|
}
|
2021-10-20 01:11:27 +08:00
|
|
|
|
|
|
|
if (anchor.tagName === 'CODE') {
|
|
|
|
target = anchor.closest('tr')
|
2021-10-22 01:08:42 +08:00
|
|
|
} else if (app.router.currentRoute.name === 'changelog' && anchor.tagName === 'H2') {
|
2021-10-21 14:40:06 +08:00
|
|
|
target = anchor.closest('.version-item')
|
2022-05-26 19:16:47 +08:00
|
|
|
} else if (['H1', 'H2', 'H3', 'H4', 'H5', 'H6'].includes(anchor.tagName)) {
|
|
|
|
target = anchor
|
2021-10-21 14:40:06 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if (target) {
|
2021-10-20 01:11:27 +08:00
|
|
|
target.dataset.target = ''
|
|
|
|
}
|
|
|
|
}, 0)
|
|
|
|
})
|
|
|
|
}
|