Display images directly on the web page, disable lazy loading, load all images at once.
// ==UserScript== // @name 禁止 Web 延迟加载图片(一次性加载) // @name:en Disable web lazy loading images (one-time loading) // @description 在 Web 页面中直接显示图片,禁止延迟加载,一次性加载所有图片 // @description:en Display images directly on the web page, disable lazy loading, load all images at once. // @version 0.8.5 // @author DUN // @match *://*/* // @grant none // @run-at document-start // @namespace https://greasyfork.org/users/662094 // ==/UserScript== (function() { 'use strict'; function isExcluded(url) { const excludedKeywords = [ // 在这里添加你要排除的关键词 ]; return excludedKeywords.some(keyword => url.includes(keyword)); } function updateImageSource(imgElement) { const srcAttribute = imgElement.getAttribute("data-src") || imgElement.getAttribute("data-original") || imgElement.src; if (srcAttribute && !isExcluded(srcAttribute)) { if (srcAttribute.startsWith('data:image')) { imgElement.src = srcAttribute; } else { imgElement.src = new URL(srcAttribute, window.location.href).href; } } const srcsetAttribute = imgElement.getAttribute("data-srcset"); if (srcsetAttribute) { imgElement.srcset = srcsetAttribute; } imgElement.removeAttribute('data-src'); imgElement.removeAttribute('data-srcset'); imgElement.removeAttribute('srcset'); imgElement.removeAttribute('sizes'); imgElement.classList.remove('lazyload', 'lazy'); } function processAddedNodes(addedNodes) { addedNodes.forEach(node => { if (node.tagName === 'IMG') { updateImageSource(node); } else if (node.querySelectorAll) { node.querySelectorAll('img').forEach(updateImageSource); } }); } const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.type === 'childList' && mutation.addedNodes.length) { processAddedNodes(mutation.addedNodes); } else if (mutation.type === 'attributes' && (mutation.attributeName === 'data-src' || mutation.attributeName === 'data-original')) { updateImageSource(mutation.target); } }); }); observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['data-src', 'data-original'] }); window.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('img').forEach(updateImageSource); }); })();