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

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

От 29.07.2021. Виж последната версия.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==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);
})();