Prevent scrolling issues when page is resized by loading images
当前为
// ==UserScript== // @name Smart scrolling // @namespace [email protected] // @description Prevent scrolling issues when page is resized by loading images // @include * // @version 1.2 // @grant none // @run-at document-start // ==/UserScript== (function() { var update = function() { if(document.readyState != "complete") requestAnimationFrame(update); var images = [].slice.call(document.getElementsByTagName('IMG')), scrollY = 0, data, rect, height, style; for(var i = 0; i < images.length; i++) { if(!images[i].zssData) images[i].zssData = {}; data = images[i].zssData; if(document.readyState == "complete") delete images[i].zssData; if(data.complete) continue; rect = images[i].getBoundingClientRect(); height = Math.max(data.height || 0, Math.round(rect.bottom - rect.top)); if(isNaN(data.height)) { if(images[i].complete || !images[i].offsetParent || getComputedStyle(images[i]).position == 'fixed') { data.complete = true; } else { data.parent = images[i]; while(true) { data.parent = data.parent.parentNode; if(data.parent == document.body) break; style = getComputedStyle(data.parent); if(style.overflow == 'auto' || style.overflow == 'scroll') break; } } } else if(data.height != height) { if(rect.top >= 0) { } else if(data.parent == document.body) { scrollY += height - data.height; } else { data.parent.scrollTop += height - data.height; } data.complete = true; } data.height = height; } if(scrollY > 0) scrollBy(0, scrollY); }; update(); })();