Speed Up Web Page Loading

Make web pages load faster by blocking ads and implementing lazy loading for images.

目前为 2024-06-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         Speed Up Web Page Loading
// @namespace    https://discord.gg/gFNAH7WNZj
// @version      1.0
// @description  Make web pages load faster by blocking ads and implementing lazy loading for images.
// @author       Bacon But Pro
// @match        *://*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Block ads and tracking scripts
    const blockedDomains = [
        'doubleclick.net',
        'googlesyndication.com',
        'google-analytics.com',
        'adsafeprotected.com',
        'adnxs.com',
        'rubiconproject.com',
        'pubmatic.com',
        'scorecardresearch.com',
        'bluekai.com'
    ];

    const observer = new MutationObserver(() => {
        document.querySelectorAll('script[src], iframe[src]').forEach(el => {
            blockedDomains.forEach(domain => {
                if (el.src.includes(domain)) {
                    el.remove();
                }
            });
        });
    });

    observer.observe(document.documentElement, { childList: true, subtree: true });

    // Implement lazy loading for images
    document.addEventListener('DOMContentLoaded', () => {
        const images = document.querySelectorAll('img');

        images.forEach(image => {
            if (image.complete) return;
            image.setAttribute('loading', 'lazy');
        });

        const lazyLoadObserver = new IntersectionObserver((entries, observer) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    const img = entry.target;
                    img.src = img.dataset.src;
                    observer.unobserve(img);
                }
            });
        });

        images.forEach(img => {
            if (img.dataset.src) {
                lazyLoadObserver.observe(img);
            } else {
                img.dataset.src = img.src;
                img.src = '';
                lazyLoadObserver.observe(img);
            }
        });
    });

})();