您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Preload subsequent pages, lazy load images and videos, and use Pjax for faster webpage loading with robust error handling and fallback navigation.
当前为
// ==UserScript== // @name Enhanced Faster Webpage Loading with Pjax // @namespace http://tampermonkey.net/ // @version 1.9 // @description Preload subsequent pages, lazy load images and videos, and use Pjax for faster webpage loading with robust error handling and fallback navigation. // @author Tae // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; // Lazy load images, videos, and multimedia document.addEventListener("DOMContentLoaded", () => { const lazyElements = Array.from(document.querySelectorAll("img.lazy, video.lazy, iframe.lazy")); function loadLazyElement(el) { const dataSrc = el.dataset.src; if (!dataSrc) return; el.src = dataSrc; if (el.tagName === "VIDEO") { el.load(); } el.classList.remove("lazy"); } if ("IntersectionObserver" in window) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { loadLazyElement(entry.target); observer.unobserve(entry.target); } }); }); lazyElements.forEach(el => observer.observe(el)); } else { const lazyLoadFallback = () => { lazyElements.forEach((el, index) => { if ( el.getBoundingClientRect().top < window.innerHeight && el.getBoundingClientRect().bottom > 0 && getComputedStyle(el).display !== "none" ) { loadLazyElement(el); lazyElements.splice(index, 1); // Remove loaded element } }); if (lazyElements.length === 0) { document.removeEventListener("scroll", lazyLoadFallback); window.removeEventListener("resize", lazyLoadFallback); window.removeEventListener("orientationchange", lazyLoadFallback); } }; document.addEventListener("scroll", lazyLoadFallback); window.addEventListener("resize", lazyLoadFallback); window.addEventListener("orientationchange", lazyLoadFallback); } }); // Prefetch links document.addEventListener("mouseover", event => { const link = event.target.closest("a[href]"); if (link && !link.target && !link.rel.includes("nofollow")) { const href = link.href; if (/^https?:\/\//.test(href) && !href.includes("#")) { const prefetch = document.createElement("link"); prefetch.rel = "prefetch"; prefetch.href = href; document.head.appendChild(prefetch); } } }); // Initialize Pjax function initializePjax() { if (typeof Pjax === "undefined") { const script = document.createElement("script"); script.src = "https://cdnjs.cloudflare.com/ajax/libs/pjax/0.2.8/pjax.min.js"; script.onload = () => setupPjax(); document.head.appendChild(script); } else { setupPjax(); } } function setupPjax() { const pjax = new Pjax({ elements: "a[href]:not([target]):not([data-pjax-disabled])", // Only internal links selectors: ["title", ".content"], // Elements to update cacheBust: true, // Force cache refresh }); document.addEventListener("pjax:send", () => console.log("Pjax: Request sent")); document.addEventListener("pjax:complete", () => { console.log("Pjax: Request complete"); reinitializeLazyLoading(); }); document.addEventListener("pjax:error", event => { console.error("Pjax: Error occurred", event); // Fallback to normal navigation window.location.href = event.request.responseURL || event.target.href; }); } function reinitializeLazyLoading() { const newLazyElements = Array.from(document.querySelectorAll("img.lazy, video.lazy, iframe.lazy:not([src])")); if ("IntersectionObserver" in window) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const el = entry.target; el.src = el.dataset.src; if (el.tagName === "VIDEO") el.load(); observer.unobserve(el); } }); }); newLazyElements.forEach(el => observer.observe(el)); } } // Initialize the script initializePjax(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址