雪球(自用):隐藏 Canvas 背景

每次进入页面时隐藏所有 Canvas 的背景

// ==UserScript==
// @name         雪球(自用):隐藏 Canvas 背景
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  每次进入页面时隐藏所有 Canvas 的背景
// @match        https://xueqiu.com/*
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    document.querySelectorAll("canvas").forEach(e => e.style.background = "none");

    // 存储监听状态的键
    const LISTENING_KEY = 'isListeningEnabled';
    // 初始化监听状态
    let isListeningEnabled = GM_getValue(LISTENING_KEY, true);
    // 注册菜单项
    GM_registerMenuCommand(
        '切换: 打开/关闭',
        toggleListening
    );

    function toggleListening() {
        isListeningEnabled = !isListeningEnabled;
        GM_setValue(LISTENING_KEY, isListeningEnabled);

        if(isListeningEnabled) {
            addListener();
        } else{
            removeListener();
        }
    }

    const list1 = document.querySelector(".vo-list-box");
    const list2 = document.querySelector(".chart-period");
    const debounceClick = debounce(checkAndCloseBtn,300);

    // 初始化监听状态
    if (isListeningEnabled) {
        addListener();
    }

    function addListener() {
        if (list1) list1.addEventListener("click", debounceClick, true);
        if (list2) list2.addEventListener("click", debounceClick, true);
    }

    function removeListener() {
        if (list1) list1.removeEventListener("click", debounceClick, true);
        if (list2) list2.removeEventListener("click", debounceClick, true);
    }


    function checkAndCloseBtn(e) {
        const activedLi = document.querySelectorAll(".vo-list-box ul li.active")[1];
        if(!activedLi) {
            return;
        }

        // 获取点击元素的 data-vo 属性
        console.log(activedLi)
        const name = activedLi.dataset.vo;
        if (!name) {
            console.error('未找到data-vo属性');
            return;
        }

        // 构造 close 按钮的选择器
        const closeBtnSecltor = `#${name}-close`;
        console.log(name, closeBtnSecltor);

        // 查找 close 按钮并触发点击
        const closeBtn = document.querySelector(closeBtnSecltor);
        if (closeBtn && closeBtn.style.display !== 'none') {
            closeBtn.click();

        } else {
            console.error('未找到Close按钮:', closeBtnSecltor);
        }
    }

    function debounce(cb, delay = 500){
        let timer;
        return function(...args) {
            timer && clearTimeout(timer);
            timer = setTimeout(()=>{
                cb.apply(this, args)
            },delay)
        }
    }
})();