taittsuu-lightbox2

タイッツーlightbox2

// ==UserScript==
// @name         taittsuu-lightbox2
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  タイッツーlightbox2
// @author       You
// @license      MIT
// @match        https://taittsuu.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=taittsuu.com
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/js/lightbox.min.js
// @resource     lightboxcss https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/css/lightbox.min.css
// @grant        GM_addStyle
// @grant        GM_getResourceText
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...

    GM_addStyle(GM_getResourceText("lightboxcss"));
    const base = 'https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/';
    GM_addStyle(
        '.lightbox {z-index: 100000;}\n'+
        '.lb-cancel {background: url(' + base + 'images/loading.gif) no-repeat;}\n'+
        '.lb-nav a.lb-prev {background: url(' + base + 'images/prev.png) left 48% no-repeat;}\n'+
        '.lb-nav a.lb-next {background: url(' + base + 'images/next.png) right 48% no-repeat;}\n'+
        '.lb-data .lb-close {background: url(' + base + 'images/close.png) top right no-repeat;}\n');

    lightbox.option({
        'fadeDuration': 200,
        'imageFadeDuration': 0,
        'resizeDuration': 0
    });

    const addedNode = function (node) {
        const array = node.querySelectorAll('div.post-media > a');
        array.forEach(function(a){
            a.dataset.lightbox = 'lightbox_' + node.id;
        });
    };

    // 変更を監視するノードを選択
    let targetNode = document.querySelector('#posts');
    if(!targetNode) {
        targetNode = document.querySelector('#searchPosts');
    }

    // (変更を監視する) オブザーバーのオプション
    const config = { childList: true };

    // 変更が発見されたときに実行されるコールバック関数
    const callback = function (mutationList, observer) {
        mutationList.forEach((mutation) => {
            switch (mutation.type) {
                case 'childList':
                    if(mutation.addedNodes.length){
                        addedNode( mutation.addedNodes[0] );
                    }
                    break;
            }
        });
    };

    // コールバック関数に結びつけられたオブザーバーのインスタンスを生成
	const observer = new MutationObserver(callback);

    // 対象ノードの設定された変更の監視を開始
    if(targetNode){
        observer.observe(targetNode, config);
    }

})();