瀏覽代碼

fix: restore scroll pos if only triggered by back/forward buttons

Tienson Qin 8 月之前
父節點
當前提交
e7fd87b791
共有 2 個文件被更改,包括 10 次插入6 次删除
  1. 1 0
      src/main/frontend/core.cljs
  2. 9 6
      src/main/frontend/handler/route.cljs

+ 1 - 0
src/main/frontend/core.cljs

@@ -22,6 +22,7 @@
 
 (defn set-router!
   []
+  (.addEventListener js/window "popstate" route-handler/restore-scroll-pos)
   (rfe/start!
    (rf/router (plugins/hook-custom-routes routes/routes) nil)
    (fn [route]

+ 9 - 6
src/main/frontend/handler/route.cljs

@@ -193,12 +193,15 @@
   (swap! state/state assoc :route-match route)
   (update-page-title! route)
   (update-page-label! route)
-  (if-let [anchor (get-in route [:query-params :anchor])]
-    (jump-to-anchor! anchor)
-    (js/setTimeout #(util/scroll-to (util/app-scroll-container-node)
-                                    (state/get-saved-scroll-position)
-                                    false)
-                   100)))
+  (when-let [anchor (get-in route [:query-params :anchor])]
+    (jump-to-anchor! anchor)))
+
+(defn restore-scroll-pos
+  []
+  (js/setTimeout #(util/scroll-to (util/app-scroll-container-node)
+                                  (state/get-saved-scroll-position)
+                                  false)
+                 100))
 
 (defn go-to-search!
   ([search-mode] (go-to-search! search-mode nil))