@@ -8,6 +8,12 @@ import arrayDedup from "array.dedup";
8
8
9
9
const keys = Object . keys ;
10
10
11
+ /**
12
+ * Calling history.pushState() or history.replaceState() won't trigger a popstate event.
13
+ * The popstate event is only triggered by performing a browser action, such as clicking on the back button
14
+ *
15
+ * https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate
16
+ */
11
17
const updateUrl = ( url ) => history . pushState && history . pushState ( "" , "" , url ) ;
12
18
13
19
const urlChange = "urlChange" ;
@@ -55,10 +61,10 @@ class UrlStore extends ReduceStore {
55
61
return new URL ( { } ) ;
56
62
}
57
63
58
- urlChange = ( ) => {
64
+ handleUrlChange = ( ) => {
59
65
this . nextEmits . push ( urlChange ) ;
60
66
urlDispatch ( { type : "url" , url : doc ( ) . URL } ) ;
61
- ajaxDispatch ( " urlChange" ) ;
67
+ ajaxDispatch ( urlChange ) ;
62
68
} ;
63
69
64
70
onUrlChange ( cb ) {
@@ -69,9 +75,9 @@ class UrlStore extends ReduceStore {
69
75
this . removeListener ( cb , urlChange ) ;
70
76
}
71
77
72
- registerEvent ( win ) {
73
- if ( win && win . addEventListener ) {
74
- win . addEventListener ( "popstate" , this . urlChange , true ) ;
78
+ registerEvent ( oWin ) {
79
+ if ( oWin && oWin . addEventListener ) {
80
+ oWin . addEventListener ( "popstate" , this . handleUrlChange , true ) ;
75
81
ajaxStore . urlDispatch = urlDispatch ;
76
82
}
77
83
}
0 commit comments