From f8de28b127b06dc161f906ef38420fd1db56256f Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 22 Jun 2020 14:57:33 +0800 Subject: [PATCH] Fix scroll error --- web/src/main/frontend/handler.cljs | 2 +- web/src/main/frontend/util.cljs | 35 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/web/src/main/frontend/handler.cljs b/web/src/main/frontend/handler.cljs index 7ba672957..8093c7dc6 100644 --- a/web/src/main/frontend/handler.cljs +++ b/web/src/main/frontend/handler.cljs @@ -536,7 +536,7 @@ [name path-params] (case name :home - "Journals" + "Logseq" :repos "Repos" :repo-add diff --git a/web/src/main/frontend/util.cljs b/web/src/main/frontend/util.cljs index dd72f9e22..a0d016fd1 100644 --- a/web/src/main/frontend/util.cljs +++ b/web/src/main/frontend/util.cljs @@ -282,28 +282,29 @@ (+ (.. js/document -body -scrollTop) (.. js/document -documentElement -scrollTop))) (defn element-top [elem top] - (if (.-offsetParent elem) - (let [client-top (or (.-clientTop elem) 0) - offset-top (.-offsetTop elem)] - (+ top client-top offset-top (element-top (.-offsetParent elem) top))) - top)) + (when elem + (if (.-offsetParent elem) + (let [client-top (or (.-clientTop elem) 0) + offset-top (.-offsetTop elem)] + (+ top client-top offset-top (element-top (.-offsetParent elem) top))) + top))) (defn scroll-to-element [elem-id] (when-not (re-find #"^/\d+$" elem-id) (when elem-id - (let [elem (.getElementById js/document elem-id) - hop-count (/ speed moving-frequency) - doc-top (cur-doc-top) - gap (/ (- (element-top elem 0) doc-top) hop-count) - main (gdom/getElement "main-content")] - (doseq [i (range 1 (inc hop-count))] - (let [hop-top-pos (* gap i) - move-to (- hop-top-pos doc-top 68) - timeout (* moving-frequency i)] - (js/setTimeout (fn [] - (.scrollTo main 0 move-to)) - timeout))))))) + (when-let [elem (.getElementById js/document elem-id)] + (let [hop-count (/ speed moving-frequency) + doc-top (cur-doc-top) + gap (/ (- (element-top elem 0) doc-top) hop-count) + main (gdom/getElement "main-content")] + (doseq [i (range 1 (inc hop-count))] + (let [hop-top-pos (* gap i) + move-to (- hop-top-pos doc-top 68) + timeout (* moving-frequency i)] + (js/setTimeout (fn [] + (.scrollTo main 0 move-to)) + timeout)))))))) (defn scroll-to-top []