Greasy Fork is available in English.

图片CDN-修复网页图片不可见的问题

将网页的全部图片套用CDN,从而使得可以更快地显示(前提是图片正常)。

// ==UserScript==
// @name         图片CDN-修复网页图片不可见的问题
// @namespace    https://leochan.me
// @homepage     https://leochan.me
// @version      1.0.1
// @description  将网页的全部图片套用CDN,从而使得可以更快地显示(前提是图片正常)。
// @author       Leo
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @license      GPLv2
// @icon         https://www.google.com/s2/favicons?sz=64&domain=leochan.me
// @require https://greasyfork.org/scripts/470241-%E4%BE%A6%E5%90%ACinnerhtml/code/%E4%BE%A6%E5%90%ACinnerHTML.js?version=1215965
// ==/UserScript==

(function() {
    'use strict';

    let disabledThisSite = false;
    let registerMenuId;

    function registerEnableThisSiteMenu(){
        if(registerMenuId){
            GM_unregisterMenuCommand(registerMenuId);
        }
        registerMenuId = GM_registerMenuCommand("✅ 已启用 (点击对当前网站禁用)", () => {
            allDisabledSite.push(location.host);
            GM_setValue("all_disabled_sites", allDisabledSite.join('|'));
            disabledThisSite = true;
            registerDisableThisSiteMenu();
        });
    }

    function registerDisableThisSiteMenu(){
        if(registerMenuId){
            GM_unregisterMenuCommand(registerMenuId);
        }
        registerMenuId = GM_registerMenuCommand("❌ 已禁用 (点击对当前网站启用)", () => {
            allDisabledSite.splice(allDisabledSite.indexOf(location.host), 1);
            GM_setValue("all_disabled_sites", allDisabledSite.join('|'));
            disabledThisSite = false;
            registerEnableThisSiteMenu();
        });
    }

    function replaceAllImagesSrc(){
        if(disabledThisSite){
            return;
        }
        let imageElements = document.querySelectorAll('img'), imageLength = imageElements.length;
        for(let i = 0; i < imageLength; i++){
            let imageSrc = imageElements[i].getAttribute('data-src') || imageElements[i].src;
            if(imageSrc.indexOf("//") === 0){
                imageSrc = location.protocol + imageSrc;
            }
            if(imageSrc.indexOf('i0.wp.com/') === -1 && imageSrc.indexOf('data:image/') === -1){
                if(imageSrc.indexOf('http') !== 0){
                    imageSrc = location.host + (imageSrc.indexOf('/') === 0 ? '' : '/') + imageSrc;
                }
                imageSrc = '//i0.wp.com/' + imageSrc.replace('https://', '').replace('http://', '')
                imageElements[i].src = imageSrc;
            }
        }
    }
    let allDisabledSite = (GM_getValue("all_disabled_sites") || '').split('|');
    disabledThisSite = allDisabledSite.includes(location.host);
    replaceAllImagesSrc();
    leoChanWatchInnerHTML('body', replaceAllImagesSrc);
    if(!disabledThisSite){
        registerEnableThisSiteMenu();
    }else{
        registerDisableThisSiteMenu();
    }
})();