您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button next to issue actions to copy issue ref (e.g. org/repo#123)
当前为
- // ==UserScript==
- // @name GitHub Copy Ticket Ref
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Adds a button next to issue actions to copy issue ref (e.g. org/repo#123)
- // @author Ryan Allison
- // @match https://github.com/*/*/issues/*
- // @grant GM_setClipboard
- // @license MIT
- // ==/UserScript==
- (function () {
- 'use strict';
- const insertButton = () => {
- if (document.getElementById('copy-ticket-ref-btn')) return;
- const pathMatch = window.location.pathname.match(/^\/([^\/]+)\/([^\/]+)\/issues\/(\d+)/);
- if (!pathMatch) return;
- const [_, owner, repo, issueNum] = pathMatch;
- const issueRef = `${owner}/${repo}#${issueNum}`;
- // Find the GitHub issue action button container
- const actionContainer = document.querySelector('[data-component="PH_Actions"] .Box-sc-g0xbh4-0');
- if (!actionContainer) return;
- const button = document.createElement('button');
- button.id = 'copy-ticket-ref-btn';
- button.textContent = '📋 Copy Ticket Ref';
- button.className = 'prc-Button-ButtonBase-c50BI'; // Match GitHub style
- button.setAttribute('data-size', 'medium');
- button.setAttribute('data-variant', 'invisible');
- button.style.marginLeft = '8px';
- button.onclick = () => {
- navigator.clipboard.writeText(issueRef);
- button.textContent = '✅ Copied!';
- setTimeout(() => {
- button.textContent = '📋 Copy Ticket Ref';
- }, 2000);
- };
- actionContainer.appendChild(button);
- };
- // Observe DOM for GitHub SPA navigation
- const observer = new MutationObserver(() => {
- insertButton();
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true,
- });
- insertButton();
- })();