IsMyTeam Admin Button

Adds admin button only on sign-in pages

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

Advertisement:

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

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