LeetCode 获取题解 Markdown, 自动启用运行结果差别.

LeetCode 获取题解 Markdown 源码, 自动启用运行结果差别.

Verze ze dne 29. 07. 2021. Zobrazit nejnovější verzi.

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name        LeetCode 获取题解 Markdown, 自动启用运行结果差别.
// @description LeetCode 获取题解 Markdown 源码, 自动启用运行结果差别.
// @namespace   https://github.com/symant233
// @match       https://leetcode-cn.com/problems/*
// @version     0.0.2
// @author      symant233
// @homepageURL  https://github.com/symant233
// @icon         https://cdn.jsdelivr.net/gh/symant233/PublicTools/Beautify/Bkela.png
// @license      GPL-3.0
// ==/UserScript==

;(function() {
    // 控制台获取题解 Markdown 源码
    function getMarkdown() {
        const node = document.querySelector('div[class*="ContentContainer"]');
        const key = Object.keys(node).find(key=>{
            return key.startsWith("__reactEventHandlers$");
        });
        console.log(node[key].children[0].props.children);
    }
    globalThis.getMarkdown = getMarkdown;
    // 自动开启运行结果差别
    function enableDiff () {
        const btn = document.querySelector('label[class*="Label-StyledSwitch"]');
        if (btn && !btn.getAttribute('beautify-data')) {
            btn.setAttribute('beautify-data', true);
            btn.click();
        }
    }
    setTimeout(() => {
        document.querySelector('div[class*=second-section-container] > div:last-child button').click();
        new Promise(resolve => {
            const container = document.querySelector('div[class*="CodeAreaContainer"]');
            if (container) {
                new MutationObserver((mutationList) => {
                    mutationList.forEach((mutation) => { 
                        if (mutation.oldValue) enableDiff();
                    });
                }).observe(container, {
                    attributes: true,
                    attributeOldValue: true,
                    subtree: true,
                });
            }
            resolve();
        });
    }, 2600);
})();