Kone Sidebar Remover

kone.gg 사이드바 삭제 (컨텍스트 메뉴 + 자동삭제)

// ==UserScript==
// @name         Kone Sidebar Remover
// @namespace    http://tampermonkey.net/
// @version      1.0.2
// @description  kone.gg 사이드바 삭제 (컨텍스트 메뉴 + 자동삭제)
// @author       Tasteful-1
// @match        https://kone.gg/*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @license      MIT
// ==/UserScript==
(() => {
    'use strict';
    const TARGET_SELECTORS = [
        '.hidden.lg\\:block.space-y-2.break-all.md\\:space-y-4.lg\\:min-w-64.lg\\:max-w-72.shrink-0',
        '.-order-1.shrink-0.transition-all.hidden.lg\\:block.w-18[data-open="false"]',
        'aside.fixed.top-14.bottom-0.left-0[data-open="false"]',
        'aside.fixed.top-14.bottom-0.left-0[data-open="true"]'
    ];
    const AUTO_DELETE_KEY = 'autoDeleteEnabled';
    let observer = null;
    let menuIds = [];

    const removeSidebar = () => {
        let removedCount = 0;
        TARGET_SELECTORS.forEach(selector => {
            const elements = document.querySelectorAll(selector);
            elements.forEach(element => {
                element.remove();
                removedCount++;
            });
        });

        if (removedCount > 0) {
            console.log(`${removedCount}개의 사이드바 요소가 삭제되었습니다.`);
            return true;
        } else {
            return false;
        }
    };

    const toggleSidebar = () => {
        let toggledCount = 0;
        TARGET_SELECTORS.forEach(selector => {
            const elements = document.querySelectorAll(selector);
            elements.forEach(element => {
                element.style.display = element.style.display === 'none' ? '' : 'none';
                toggledCount++;
            });
        });

        if (toggledCount > 0) {
            console.log(`${toggledCount}개의 사이드바 요소가 토글되었습니다.`);
        }
    };

    const isAutoDeleteEnabled = () => GM_getValue(AUTO_DELETE_KEY, false);
    const toggleAutoDelete = () => {
        const currentState = isAutoDeleteEnabled();
        const newState = !currentState;
        GM_setValue(AUTO_DELETE_KEY, newState);
        if (newState) {
            startAutoDelete();
            console.log('자동삭제가 활성화되었습니다.');
        } else {
            stopAutoDelete();
            console.log('자동삭제가 비활성화되었습니다.');
        }
        updateMenuCommands();
    };
    const startAutoDelete = () => {
        removeSidebar();
        observer = new MutationObserver(() => {
            removeSidebar();
        });
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    };
    const stopAutoDelete = () => {
        if (observer) {
            observer.disconnect();
            observer = null;
        }
    };
    const updateMenuCommands = () => {
        // 기존 메뉴 항목들 제거
        menuIds.forEach(id => {
            try {
                GM_unregisterMenuCommand(id);
            } catch (e) {
                // 에러 무시 (이미 제거된 경우)
            }
        });
        menuIds = [];
        // 새 메뉴 항목들 등록
        const autoDeleteStatus = isAutoDeleteEnabled() ? 'ON' : 'OFF';
        menuIds.push(GM_registerMenuCommand('사이드바 삭제', removeSidebar));
        menuIds.push(GM_registerMenuCommand('사이드바 토글', toggleSidebar));
        menuIds.push(GM_registerMenuCommand(`자동삭제 ${autoDeleteStatus}`, toggleAutoDelete));
    };
    const init = () => {
        updateMenuCommands();
        if (isAutoDeleteEnabled()) {
            startAutoDelete();
        }
    };
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址