IsMyTeam Admin Button

Adds admin button only on sign-in pages

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

Advertisement:

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

Advertisement:

// ==UserScript==
// @name         IsMyTeam Admin Button
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Adds admin button only on sign-in pages
// @match        *://*/*
// @license      MIT
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const BUTTON_ID = 'ismyteam-admin-support-button';

    function isSignInPath() {
        const pathParts = window.location.pathname
            .split('/')
            .filter(Boolean)
            .map((part) => part.toLowerCase());

        return pathParts.includes('sign-in');
    }

    function addButton() {
        if (!document.body) {
            return;
        }

        if (!isSignInPath()) {
            document.getElementById(BUTTON_ID)?.remove();
            return;
        }

        if (document.getElementById(BUTTON_ID)) {
            return;
        }

        const button = document.createElement('a');
        button.id = BUTTON_ID;
        button.textContent = 'admin';
        button.href = `${window.location.origin}/admin-support`;

        Object.assign(button.style, {
            position: 'fixed',
            top: '20px',
            left: '20px',
            zIndex: '2147483647',
            padding: '10px 16px',
            background: '#111827',
            color: '#ffffff',
            fontSize: '14px',
            fontFamily: 'Arial, sans-serif',
            fontWeight: '600',
            textDecoration: 'none',
            borderRadius: '8px',
            boxShadow: '0 4px 12px rgba(0, 0, 0, 0.25)',
            cursor: 'pointer'
        });

        document.body.appendChild(button);
    }

    function start() {
        addButton();

        const observer = new MutationObserver(addButton);
        observer.observe(document.documentElement, {
            childList: true,
            subtree: true
        });

        setInterval(addButton, 1000);
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', start);
    } else {
        start();
    }
})();