@@ -26,8 +26,7 @@ function calculateCurrentAnchor (anchors) {
26
26
return anchors [ 0 ]
27
27
}
28
28
29
- function getAnchors ( ) {
30
- const sidebarLinks = [ ] . slice . call ( document . querySelectorAll ( AHL_SIDEBAR_LINK_SELECTOR ) )
29
+ function getAnchors ( sidebarLinks ) {
31
30
return [ ] . slice
32
31
. call ( document . querySelectorAll ( AHL_HEADER_ANCHOR_SELECTOR ) )
33
32
. filter ( anchor => sidebarLinks . some ( sidebarLink => sidebarLink . hash === anchor . hash ) )
@@ -41,49 +40,23 @@ function getAnchors () {
41
40
} )
42
41
}
43
42
44
- let freezeScrollEvent = true
45
-
46
43
export default {
47
44
mounted ( ) {
48
- this . $router . beforeEach ( ( to , from , next ) => {
49
- if ( to . path !== from . path ) {
50
- freezeScrollEvent = true
51
- }
52
- next ( )
53
- } )
54
-
55
45
this . $vuepress . $on ( 'AsyncMarkdownContentMounted' , ( slotKey ) => {
56
- // delay activation of scroll event
57
- setTimeout ( ( ) => {
58
- freezeScrollEvent = false
59
- } , 1000 )
60
46
if ( slotKey === 'default' ) {
61
- window . addEventListener ( 'scroll' , ( ) => this . onScroll ( freezeScrollEvent ) )
47
+ window . addEventListener ( 'scroll' , this . onScroll )
62
48
}
63
49
} )
64
50
65
51
this . $vuepress . $on ( 'AnchorHashChange' , ( anchor ) => {
66
- // When user clicked sidebar links, we need to disable the scroll
67
- // event triggered.
68
- if ( this . $route . hash === anchor . hash ) {
69
- return
70
- }
71
- this . $vuepress . $set ( 'disableScrollBehavior' , true )
72
- this . $router . replace ( decodeURIComponent ( anchor . hash ) , ( ) => {
73
- // execute after scrollBehavior handler.
74
- this . $nextTick ( ( ) => {
75
- this . $vuepress . $set ( 'disableScrollBehavior' , false )
76
- } )
77
- } )
52
+ this . $router . replace ( decodeURIComponent ( anchor . hash ) )
78
53
} )
79
54
} ,
80
55
81
56
methods : {
82
- onScroll : throttle ( function ( freezeScrollEvent ) {
83
- if ( freezeScrollEvent ) {
84
- return
85
- }
86
- const anchors = getAnchors ( )
57
+ onScroll : throttle ( function ( ) {
58
+ this . $sidebarLinks = [ ] . slice . call ( document . querySelectorAll ( AHL_SIDEBAR_LINK_SELECTOR ) )
59
+ const anchors = getAnchors ( this . $sidebarLinks )
87
60
if ( anchors . length === 0 ) {
88
61
return
89
62
}
0 commit comments