Просмотр исходного кода

tuneup performance for initSlimScrollForRevisionToc when resized

Yuki Takei 7 лет назад
Родитель
Сommit
c56f270d2c
1 измененных файлов с 6 добавлено и 5 удалено
  1. 6 5
      resource/js/legacy/crowi.js

+ 6 - 5
resource/js/legacy/crowi.js

@@ -8,6 +8,8 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
 
+import { debounce } from 'throttle-debounce';
+
 import GrowiRenderer from '../util/GrowiRenderer';
 import Page from '../components/Page';
 
@@ -189,6 +191,8 @@ Crowi.initSlimScrollForRevisionToc = () => {
     });
   }
 
+  const resetScrollbarDebounced = debounce(100, resetScrollbar);
+
   // initialize
   const revisionTocTop = getCurrentRevisionTocTop();
   resetScrollbar(revisionTocTop);
@@ -197,11 +201,8 @@ Crowi.initSlimScrollForRevisionToc = () => {
    * set event listener
    */
   // resize
-  // TODO turn performance
   window.addEventListener('resize', (event) => {
-    setTimeout(() => {
-      resetScrollbar(getCurrentRevisionTocTop());
-    }, 200);
+    resetScrollbarDebounced(getCurrentRevisionTocTop());
   });
   // affix on
   $('#revision-toc').on('affixed.bs.affix', function() {
@@ -209,7 +210,7 @@ Crowi.initSlimScrollForRevisionToc = () => {
   });
   // affix off
   $('#revision-toc').on('affixed-top.bs.affix', function() {
-    // calculate sum of height (.navbar-header + bg-title) + margin-top of .main
+    // calculate sum of height (.navbar-header + .bg-title) + margin-top of .main
     const sum = 138;
     resetScrollbar(sum);
   });