Net-7 Source Vault Main Script

Watch for dynamically added 'source_vault' element and delegate logic to another script

Устаревшая версия за 30.01.2024. Перейдите к последней версии.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         Net-7 Source Vault Main Script
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Watch for dynamically added 'source_vault' element and delegate logic to another script
// @author       You
// @match        https://www.net-7.org/*
// @grant        none
// @license      CC BY-NC
// ==/UserScript==

(function() {
    'use strict';

    // ID of the target element
    const targetElementId = 'source_vault';

    // Function to check if the node is within the target element
    function isWithinTargetElement(node) {
        return node && node.id === targetElementId || (node.parentNode && isWithinTargetElement(node.parentNode));
    }

    function addCSS() {
        var cssToAdd = `
            /* Style for items disabled by filtering */
            .mark_as_filtered {
                background-color: rgba(255, 0, 0, 0.5);
            }

            /* Style for items added to the move list */
            .mark_as_moving {
                position:relative;
                z-index:1;
                background-color: rgba(0, 255, 0, 0.5);
            }

            /* Custom version of pad-item style for use in the transfer slots. */
            .custom_pad-item {
                position: relative;
                z-index: 4;
            }
            /* Custom version of pad-item style for use in the transfer slots. */
            .custom_pad-background {
                position: absolute;
                top: 0;
                left: 0;
                z-index: 3;
            }
            /* Custom version of pad-item style for use in the transfer slots. */
            .custom_pad-level, .custom_pad-stack {
                position: absolute;
                left: 0;
                z-index: 5;
                cursor: pointer;
                width: 100%;
                text-align: center;
                font-weight: bold;
                color: #00FF00;
                text-shadow: -1px 0 #000, 0 1px #000, 1px 0 #000, 0 -1px #000;
                font-family: courier;
                font-size: 100%;
            }
            .custom_pad-level {
                top:0;
            }
            .custom_pad-stack {
                bottom:0;
            }
        `;

        // Create a <style> element
        var style = document.createElement('style');
        style.type = 'text/css';

        if (style.styleSheet) {
            // For IE
            style.styleSheet.cssText = cssToAdd;
        } else {
            // For other browsers
            style.appendChild(document.createTextNode(cssToAdd));
        }

        // Append the <style> element to the <head> of the document
        document.head.appendChild(style);
        console.log("Custom CSS added.");
    }

    // Function to handle the DOM changes
    function handleChanges(mutationsList, observer) {
        for (const mutation of mutationsList) {
            if (mutation.type === 'childList' && isWithinTargetElement(mutation.target)) {
                // Disconnect the observer temporarily to avoid an infinite loop
                observer.disconnect();
                addCSS();
                window.handleHTMLModification(mutation.target);
                // Reconnect the observer after modifications
                observer.observe(document.documentElement, config);
            }
        }
    }

    // Create a MutationObserver to watch for changes on 'source_vault'
    const observer = new MutationObserver(handleChanges);

    // Specify options for the observer
    const config = { childList: true, subtree: true };

    // Start checking for 'source_vault' existence
    observer.observe(document.documentElement, config);

})();