Skip to content

Commit 86baeae

Browse files
committed
feat: continuous scroll
1 parent 6aa4db6 commit 86baeae

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

epub_browser/assets/chapter.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,14 +727,29 @@ function initScript() {
727727
var key = getStorageKey("scroll");
728728
var pos = localStorage.getItem(key);
729729
var wh = window.innerHeight;
730-
setTimeout(function() {
730+
var scrollRestoreTimer = setTimeout(function() {
731731
if (pos && parseInt(pos) > 0) {
732732
window.scrollTo(0, parseInt(pos));
733733
var total = document.documentElement.scrollHeight - wh;
734734
var pct = Math.round((parseInt(pos)/total)*100);
735735
showNotification('Progress loaded: '+pct+'%', 'info');
736736
}
737737
}, 1000);
738+
// 用户在恢复前手动滚动则取消自动恢复
739+
var cancelScrollRestore = function() {
740+
if (scrollRestoreTimer) {
741+
clearTimeout(scrollRestoreTimer);
742+
scrollRestoreTimer = null;
743+
}
744+
window.removeEventListener('scroll', cancelScrollRestore);
745+
window.removeEventListener('wheel', cancelScrollRestore);
746+
window.removeEventListener('touchstart', cancelScrollRestore);
747+
window.removeEventListener('keydown', cancelScrollRestore);
748+
};
749+
window.addEventListener('scroll', cancelScrollRestore, { once: true });
750+
window.addEventListener('wheel', cancelScrollRestore, { once: true });
751+
window.addEventListener('touchstart', cancelScrollRestore, { once: true });
752+
window.addEventListener('keydown', cancelScrollRestore, { once: true });
738753
}
739754
}
740755
}

0 commit comments

Comments
 (0)