Speed Up Web Page Loading

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

目前為 2024-07-08 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Speed Up Web Page Loading
// @namespace    https://discord.gg/gFNAH7WNZj
// @version      1.3
// @description  Make web pages load faster by blocking ads and implementing lazy loading for images.
// @author       Bacon But Pro
// @match        *://*/*
// @grant        none
// @icon         https://cdn141.picsart.com/351217840073211.png
// @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',
        'facebook.net',
        'amazon-adsystem.com',
        'ads-twitter.com',
        'criteo.com',
        'taboola.com',
        'outbrain.com',
        'cdn.ampproject.org',
        'quantserve.com',
        'googletagmanager.com',
        'gemini.yahoo.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);
            }
        });
    });

    // Remove unwanted elements like pop-ups
    const removeUnwantedElements = () => {
        const unwantedSelectors = [
            '.popup', // common class name for pop-ups
            '.ad-banner', // common class name for ad banners
            '#subscribe-modal', // common ID for subscription modals
            '.overlay', // common class name for overlay ads
        ];

        unwantedSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(el => el.remove());
        });
    };

    const unwantedObserver = new MutationObserver(removeUnwantedElements);
    unwantedObserver.observe(document.documentElement, { childList: true, subtree: true });
    document.addEventListener('DOMContentLoaded', removeUnwantedElements);

    // Keep essential buttons
    const keepEssentialButtons = () => {
        const essentialButtons = [
            'button.important', // Add selectors for buttons you want to keep
            '.keep-this-button',
        ];

        essentialButtons.forEach(selector => {
            document.querySelectorAll(selector).forEach(el => {
                el.style.display = 'block';
            });
        });
    };

    const essentialButtonsObserver = new MutationObserver(keepEssentialButtons);
    essentialButtonsObserver.observe(document.documentElement, { childList: true, subtree: true });
    document.addEventListener('DOMContentLoaded', keepEssentialButtons);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址