Komica Hide Image

Make images opacity lower on Komica.

当前为 2019-04-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         Komica Hide Image
// @version      1.0.1
// @description  Make images opacity lower on Komica.
// @author       Hayao-Gai
// @namespace	 https://github.com/HayaoGai
// @icon         https://i.imgur.com/ltLDPGc.jpg
// @include      http://*.komica.org/*/*
// @include      https://*.komica.org/*/*
// @grant        none
// ==/UserScript==

(function() {
    "use strict";

    window.addEventListener("load", () => {
        addListener();
        fixNGID();
        addObserver();
    });

    function addListener() {
        const image = document.getElementsByTagName("img");
        for (let i = 0; i < image.length; i++) {
            if (image[i].src.match("thumb")) {
                image[i].style.opacity = "0.1";
                image[i].style.transition = "opacity 0.3s";
                image[i].addEventListener("mouseenter", showImage);
                image[i].addEventListener("mouseleave", hideImage);
            }
        }
    }

    function showImage() {
        this.style.opacity = "1";
    }

    function hideImage() {
        this.style.opacity = "0.1";
    }

    // 配合 NGID 的 展開 按鈕
    function fixNGID() {
        const expand = document.querySelectorAll(".-expand-thread");
        const thread = [...expand].map(e => e.parentElement.parentElement.parentElement);
        for (let i = 0; i < expand.length; i++) expand[i].addEventListener("click", () => waitLoad(thread[i]));
    }

    function waitLoad(thread) {
        setTimeout(() => {
            if (thread.children.length === 7) waitLoad(thread);
            else addListener();
        }, 100);
    }

    // 配合 NGID 的 同ID視窗 或 回覆視窗
    function addObserver() {
        const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
        const target = document.querySelector(".popup_area");
        const config = { attributes: true, childList: true, characterData: true };
        const observer = new MutationObserver(addListener);
        observer.observe(target, config);
    }

})();