LeetCode 跳转到 LeetCode.cn

在 LeetCode.com 上添加一个跳转到 LeetCode.cn 的超链接按钮

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         LeetCode 跳转到 LeetCode.cn
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在 LeetCode.com 上添加一个跳转到 LeetCode.cn 的超链接按钮
// @author       Moranjianghe
// @match        https://leetcode.com/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个新的<a>元素作为按钮
    var link = document.createElement('a');
    var buttonText = document.createTextNode('跳转到 LeetCode.cn');
    link.appendChild(buttonText);
    link.className = 'ml-2 group/nav-back cursor-pointer gap-2 hover:text-lc-icon-primary dark:hover:text-dark-lc-icon-primary flex items-center h-[32px] transition-none hover:bg-fill-quaternary dark:hover:bg-fill-quaternary text-gray-60 dark:text-gray-60 px-2';

    // 设置超链接的 href 属性
    function updateLink() {
        var path = window.location.pathname;
        var newUrl = 'https://leetcode.cn' + path;
        link.setAttribute('href', newUrl);
    }

    // 使用 MutationObserver 监听 URL 变化
    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.type === 'childList') {
                updateLink(); // 当 URL 变化时更新超链接
            }
        });
    });

    var config = { childList: true, subtree: true };
    observer.observe(document.body, config); // 开始监听

    // 尝试添加按钮到目标<div>
    function tryAppendButton() {
        var targetDiv = document.getElementById('ide-top-btns');
        if (targetDiv) {
            targetDiv.appendChild(link);
            clearInterval(appendButtonInterval); // 如果找到目标元素,停止尝试
        }
    }

    var appendButtonInterval = setInterval(tryAppendButton, 500); // 每500毫秒尝试一次添加按钮
})();