您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
get the ticket title
// ==UserScript== // @name issue-tools // @namespace http://tampermonkey.net/ // @version 0.7 // @description get the ticket title // @author simpleyzh // @match https://wonder.atlassian.net/browse/** // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== (function () { 'use strict'; const text = "{issue_numbers} {title}"; function insertButton() { const els = document.getElementsByClassName("css-1gd7hga"); if (!els || els.length < 3) return; let numberStr = ""; for (let i = 2; i < els.length && i < 4; i++) { let issue_number; if (i == els.length - 1) { issue_number = els[i].innerText; } else { let number = els[i].innerText; if (isNaN(Number(number.substring(number.lastIndexOf('-') + 1)))) continue; issue_number = number; } numberStr += issue_number; if (i == 2) { numberStr += '/'; } } const titleEl = document.querySelector("._1mouidpf._1dyz4jg8._1p1dglyw._11c8nf1z._syaz1fxt"); if (!titleEl) return; let title = titleEl.innerText; const header = document.querySelector("._1reoewfl._18m9ewfl._1e0c1txw._4cvr1h6o._16jlkb7n._1looidpf._6myxv47k"); if (!header) return; // 如果已经插过,就不重复插 if (header.querySelector("#my-copy-btn")) return; const result = text.replace("{issue_numbers}", numberStr).replace("{title}", title); const btn = document.createElement("button"); btn.id = "my-copy-btn"; btn.style.cssText = "padding-left:10px;font-size:17px;color:#a0006b;cursor:pointer;background-color:#008cba8a;border-radius:4px;border:0px;"; btn.innerText = "copy"; btn.addEventListener("click", () => copyText(result)); const input = document.createElement("input"); input.id = "copy-board"; input.style.cssText = "position:absolute;top:0;left:0;opacity:0;z-index:-10;"; btn.appendChild(input); header.appendChild(btn); console.log("按钮已插入"); } function copyText(value) { let input = document.getElementById("copy-board"); input.value = value; input.select(); document.execCommand("copy"); console.log("复制成功:", value); } // 用 MutationObserver 监听页面变化 const observer = new MutationObserver(() => { insertButton(); }); observer.observe(document.body, { childList: true, subtree: true }); // 初次运行 insertButton(); })();