Preload subsequent pages and lazy load images to speed up webpage loading
当前为
// ==UserScript==
// @name Faster Webpage Loading
// @namespace http://tampermonkey.net/
// @version 1.2
// @description Preload subsequent pages and lazy load images to speed up webpage loading
// @author tae
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Lazy load images
document.addEventListener("DOMContentLoaded", function() {
let lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));
if ("IntersectionObserver" in window) {
let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
let lazyImage = entry.target;
lazyImage.src = lazyImage.dataset.src;
lazyImage.classList.remove("lazy");
lazyImageObserver.unobserve(lazyImage);
}
});
});
lazyImages.forEach(function(lazyImage) {
lazyImageObserver.observe(lazyImage);
});
} else {
// Fallback for browsers without IntersectionObserver support
let lazyLoad = function() {
lazyImages.forEach(function(lazyImage) {
if (lazyImage.getBoundingClientRect().top < window.innerHeight && lazyImage.getBoundingClientRect().bottom > 0 && getComputedStyle(lazyImage).display !== "none") {
lazyImage.src = lazyImage.dataset.src;
lazyImage.classList.remove("lazy");
}
});
if (lazyImages.length === 0) {
document.removeEventListener("scroll", lazyLoad);
window.removeEventListener("resize", lazyLoad);
window.removeEventListener("orientationchange", lazyLoad);
}
};
document.addEventListener("scroll", lazyLoad);
window.addEventListener("resize", lazyLoad);
window.addEventListener("orientationchange", lazyLoad);
}
});
// Preload subsequent pages
document.addEventListener("mouseover", function(event) {
if (event.target.tagName === 'A' && event.target.href) {
let link = event.target.href;
let prefetchLink = document.createElement('link');
prefetchLink.rel = 'prefetch';
prefetchLink.href = link;
document.head.appendChild(prefetchLink);
}
});
})();