images predownload

predownload the images in web

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         images predownload
// @license      MIT
// @namespace    https://github.com/xgame-0/tamper-monkey-script
// @version      2026-03-31
// @description  predownload the images in web
// @author       xgame-0
// @match        *://hmjidi.com/*
// @include      /^https?:\/\/aman\d+\.(com|org)\//
// @include      /^https?:\/\/xman\d+\.com\//
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const CONFIGS = [
        {
            regExp: /^(?:aman\d+\.(?:com|org)|xman\d+\.com)$/,
            attr: 'data-original',
        },
        {
            host: ['hmjidi.com'],
            attr: 'data-src',
        }
    ];

    function checkConfigHost(cfgHost) {
        const host = window.location.host;

        if (!Array.isArray(cfgHost)) {
            return !!cfgHost && host.includes(cfgHost);
        }

        return cfgHost.some(item => checkConfigHost(item));
    }

    function checkConfigRegExp(re) {
        const host = window.location.host;

        if (!Array.isArray(re)) {
            return !!re && re.test(host);
        }

        return re.some(item => checkConfigRegExp(item));
    }

    function getConfig() {
        return CONFIGS.filter(cfg => {
            if (cfg.host) return checkConfigHost(cfg.host);
            if (cfg.regExp) return checkConfigRegExp(cfg.regExp);
            return false;
        });
    }

    function predownloadImage(attrName) {
        const images = document.querySelectorAll('img');

        images.forEach((e) => {
            const attrValue = e.getAttribute(attrName);
            if (!attrValue) return;

            const img = new Image();
            img.src = attrValue;
        });
    }

    function main(ev) {
        console.log('event:', ev);
        const cfgs = getConfig();
        console.log('host:', window.location.host, 'cfgs:', cfgs);

        cfgs.forEach(cfg => {
            predownloadImage(cfg.attr);
        });
    }

    if (['complete', 'interactive'].includes(document.readyState)) {
        main();
    } else {
        window.addEventListener('DOMContentLoaded', main, { once: true });
        window.addEventListener('load', main, { once: true });
    }
})();