Сделал такой скрипт для TamperMonkey:
// ==UserScript==
// @name Вниз
// @namespace http://tampermonkey.net/
// @version 2026-08-20
// @description Вниз
// @author You
// @match https://...
// @grant GM_registerMenuCommand
// ==/UserScript==
(function() {
'use strict';
let makeScroll = null;
const step = 500;
const pause = 100; // мс
function scrollByX() {
if ((window.innerHeight + window.scrollY) >= document.body.scrollHeight) {
clearInterval(makeScroll);
makeScroll = null;
console.log("Отмена прокрутки -- уже внизу.");
} else {
window.scrollBy(0, step);
console.log("На", step, "вниз");
}
};
function startRolling () {
console.log("Запускаю прокрутку");
if (makeScroll) {
clearInterval(makeScroll);
makeScroll = null;
console.log("Отмена прокрутки -- уже шла.");
} else {
makeScroll = setInterval( scrollByX, pause);
console.log("Прокрутка запущена");
}
}
GM_registerMenuCommand("Прокрутить вниз", startRolling );
window.addEventListener('keydown', function(event) {
if (event.altKey && event.code === 'KeyZ') {
startRolling();
console.log("Alt-Z");
}
} );
})();
Он должен медленно прокрутить страницу вниз (шагами по 500 пикселов за 100 мс), чтобы отработала ленивая загрузка изображений.
Как я понимаю, при загрузке страницы makeScroll — null, и прокрутка не должна начаться, пока я не запущу скрипт из меню или не нажму Alt-Z. Тогда почему при перезагрузке страницы она сразу начинает скроллиться?
ОТВЕТ: Лишние () в GM_registerMenuCommand. Исправил.

