您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Lazy load subsequent pages on catalog pages with a 1-second delay, display current page number, and show distance from the bottom
// ==UserScript== // @name Shafa Endless // @namespace http://tampermonkey.net/ // @version 1.2 // @description Lazy load subsequent pages on catalog pages with a 1-second delay, display current page number, and show distance from the bottom // @author You // @match https://shafa.ua/* // @match https://www.tavriav.ua/subcatalog/209/* // @grant GM_addStyle // @grant GM_xmlhttpRequest // @license MIT // ==/UserScript== (function() { 'use strict'; const urlParams = new URLSearchParams(window.location.search); let currentPage = urlParams.has('page') ? parseInt(urlParams.get('page'), 10) : 1; const distanceFromBottom = 4000; let loading = false; let pagesToLoad = 1; GM_addStyle(` #displayDiv { position: fixed; top: 10px; left: 10px; background: rgba(0,0,0,0.7); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 14px; z-index: 1000; } `); const pageNumberDisplay = document.createElement('div'); pageNumberDisplay.id = "displayDiv"; document.body.appendChild(pageNumberDisplay); window.addEventListener('scroll', () => { //const distance = Math.max(document.body.offsetHeight - (window.innerHeight + window.scrollY), 0); // Ensure the value doesn't go negative const distance = document.documentElement.scrollHeight - window.scrollY - window.innerHeight;; pageNumberDisplay.innerHTML = `Page: ${currentPage}<br>${document.body.offsetHeight}<br>${(window.innerHeight + window.scrollY)}<br>Distance from bottom: ${Math.round(distance)}px`; if (!loading && distance <= distanceFromBottom) { currentPage++; loadMultiplePages(currentPage, pagesToLoad); } }); // Modify the appendContent function: function appendContent(text) { const parser = new DOMParser(); const doc = parser.parseFromString(text, 'text/html'); const newContentItems = doc.querySelectorAll('.b-catalog__item'); const catalog = document.querySelector('.b-catalog.b-catalog_max-columns_4.b-block'); newContentItems.forEach(item => { catalog.appendChild(item.cloneNode(true)); }); // Append a separation line after the content const separator = document.createElement('hr'); catalog.appendChild(separator); } function fetchPage(pageNum) { const currentURL = new URL(window.location.href); const params = currentURL.searchParams; params.set('page', pageNum); return fetch(`${currentURL.origin}${currentURL.pathname}?${params.toString()}`) .then(response => response.text()); } function loadMultiplePages(startPage, count) { if (count === 0) { loading = false; return; } loading = true; fetchPage(startPage).then(text => { appendContent(text); setTimeout(() => { loadMultiplePages(startPage + 1, count - 1); }, 1000); }); } })();