From e37d086611b9d4f458b78a2779b7b08da2e46279 Mon Sep 17 00:00:00 2001 From: wareya Date: Mon, 22 Oct 2018 19:41:29 -0400 Subject: [PATCH] add autoscrolling --- options.js | 9 +++++++++ reader.js | 14 +++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/options.js b/options.js index 36df08c..5f95c98 100644 --- a/options.js +++ b/options.js @@ -249,6 +249,15 @@ function defaults() default: false, label: "Reader insert at bottom (not recommended)" }); + settings.push({ + id: "reader_reverse", + kind: "number", + min: 0, + max: 10000, + step: 1, + default: 200, + label: "Reader autoscroll leeway (when \"insert at bottom\" is enabled) (0 disables)" + }); // other (added imperatively) settings.push({ diff --git a/reader.js b/reader.js index 36ff1b4..1648012 100644 --- a/reader.js +++ b/reader.js @@ -6,7 +6,8 @@ // we only use a tiny number of settings here let settings = { -reader_reverse: false +reader_reverse: false, +reader_leeway: 200 }; async function settings_init() @@ -21,6 +22,7 @@ async function settings_init() settings[name] = temp; } getvar("reader_reverse", false); + getvar("reader_leeway", 200); } catch(err) {} // options not stored yet } @@ -60,7 +62,17 @@ function update(text) if(!settings.reader_reverse) target.insertBefore(newnode, document.body.firstChild); else + { target.appendChild(newnode); + + if(settings.reader_leeway != 0) + { + let scroll_end_distance = -document.body.scrollHeight + -document.body.clientHeight + 2*document.body.offsetHeight - document.body.scrollTop; + + if (scroll_end_distance < settings.reader_leeway) + window.scrollTo(0, document.body.scrollHeight); + } + } document.getElementById("linecount").innerText = parseInt(document.getElementById("linecount").innerText)+1; }