@@ -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