From 7853285eea0aa979b08b887d62de07d8082b0c1f Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Thu, 12 Apr 2018 19:58:18 -0700 Subject: [PATCH] Fix scrollTop jiggle in Firefox (#94) Fixes #64 --- routes/_utils/autosize.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/routes/_utils/autosize.js b/routes/_utils/autosize.js index 6e241550..db898632 100644 --- a/routes/_utils/autosize.js +++ b/routes/_utils/autosize.js @@ -15,6 +15,8 @@ function assign (ta) { return } + // TODO: hack - grab our scroll container so we can maintain the scrollTop + let container = document.getElementsByClassName('container')[0] let heightOffset = null let cachedHeight = null @@ -39,10 +41,11 @@ function assign (ta) { function _resize () { const originalHeight = ta.style.height + const scrollTop = container.scrollTop - ta.style.height = '' + ta.style.height = '' // this may change the scrollTop in Firefox - let endHeight = ta.scrollHeight + heightOffset + const endHeight = ta.scrollHeight + heightOffset if (ta.scrollHeight === 0) { // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. @@ -51,6 +54,7 @@ function assign (ta) { } ta.style.height = endHeight + 'px' + container.scrollTop = scrollTop // Firefox jiggles if we don't reset the scrollTop of the container return endHeight } @@ -76,7 +80,7 @@ function assign (ta) { } } - const pageResize = debounce(update, 1000) + const pageResize = debounce(() => requestAnimationFrame(update), 1000) const destroy = () => { window.removeEventListener('resize', pageResize, false)