Skip to content

Commit

Permalink
fix($theme-default): nav url change bug (close: #865) (#1475)
Browse files Browse the repository at this point in the history
  • Loading branch information
KyleJShaver authored and ulivz committed Mar 24, 2019
1 parent 7fc9047 commit 521dddd
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions packages/@vuepress/plugin-active-header-links/clientRootMixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ export default {
document.body.scrollTop
)

const scrollHeight = Math.max(
document.documentElement.scrollHeight,
document.body.scrollHeight
)

const bottomY = window.innerHeight + scrollTop

for (let i = 0; i < anchors.length; i++) {
const anchor = anchors[i]
const nextAnchor = anchors[i + 1]
Expand All @@ -31,9 +38,19 @@ export default {
|| (scrollTop >= anchor.parentElement.offsetTop + 10
&& (!nextAnchor || scrollTop < nextAnchor.parentElement.offsetTop - 10))

if (isActive && decodeURIComponent(this.$route.hash) !== decodeURIComponent(anchor.hash)) {
const routeHash = decodeURIComponent(this.$route.hash)
if (isActive && routeHash !== decodeURIComponent(anchor.hash)) {
let activeAnchor = anchor
// check if anchor is at the bottom of the page to keep $route.hash consistent
if (bottomY === scrollHeight) {
for (let j = i + 1; j < anchors.length; j++) {
if (routeHash === decodeURIComponent(anchors[j].hash)) {
activeAnchor = anchors[j]
}
}
}
this.$vuepress.$set('disableScrollBehavior', true)
this.$router.replace(decodeURIComponent(anchor.hash), () => {
this.$router.replace(decodeURIComponent(activeAnchor.hash), () => {
// execute after scrollBehavior handler.
this.$nextTick(() => {
this.$vuepress.$set('disableScrollBehavior', false)
Expand Down

0 comments on commit 521dddd

Please sign in to comment.