Bläddra i källkod

Fix toc scroll

simov 2 år sedan
förälder
incheckning
22b1fe75de
2 ändrade filer med 22 tillägg och 32 borttagningar
  1. 3 11
      content/index.js
  2. 19 21
      content/scroll.js

+ 3 - 11
content/index.js

@@ -74,13 +74,10 @@ chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
 
 var oncreate = {
   markdown: () => {
-    scroll.body()
+    setTimeout(() => scroll(), 0)
   },
   html: () => {
     update()
-  },
-  toc: () => {
-    scroll.toc()
   }
 }
 
@@ -91,9 +88,6 @@ var onupdate = {
       update()
     }
   },
-  toc: () => {
-    scroll.toc()
-  },
   theme: () => {
     if (state.content.mermaid) {
       setTimeout(() => mmd.render(), 0)
@@ -102,7 +96,7 @@ var onupdate = {
 }
 
 var update = () => {
-  scroll.body()
+  scroll()
 
   if (state.content.syntax) {
     setTimeout(() => Prism.highlightAll(), 20)
@@ -186,9 +180,7 @@ function mount () {
         ))
 
         if (state.content.toc) {
-          dom.push(m('#_toc.tex2jax-ignore', {oncreate: oncreate.toc, onupdate: onupdate.toc},
-            m.trust(state.toc)
-          ))
+          dom.push(m('#_toc.tex2jax-ignore', m.trust(state.toc)))
           $('body').classList.add('_toc-left')
         }
       }

+ 19 - 21
content/scroll.js

@@ -77,27 +77,25 @@ var scroll = (() => {
       })
     }
   }
-  return {
-    body: () => {
-      var loaded
-      race(() => {
-        if (!loaded) {
-          loaded = true
-          var container = ((html = $('html')) => (
-            html.scrollTop = 1,
-            html.scrollTop ? (html.scrollTop = 0, html) : $('body')
-          ))()
-          if (state.content.scroll) {
-            listen(container, 'md-')
-          }
-          else if (location.hash && $(location.hash)) {
-            container.scrollTop = $(location.hash).offsetTop
-          }
+  return () => {
+    var loaded
+    race(() => {
+      if (!loaded) {
+        loaded = true
+        var container = ((html = $('html')) => (
+          html.scrollTop = 1,
+          html.scrollTop ? (html.scrollTop = 0, html) : $('body')
+        ))()
+        if (state.content.scroll) {
+          listen(container, 'md-')
         }
-      })
-    },
-    toc: () => {
-      listen($('#_toc'), 'md-toc-')
-    }
+        else if (location.hash && $(location.hash)) {
+          container.scrollTop = $(location.hash).offsetTop
+        }
+        if (state.content.toc) {
+          setTimeout(() => listen($('#_toc'), 'md-toc-'), 10)
+        }
+      }
+    })
   }
 })()