您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an issue creation button to GitHub repository pages.
// ==UserScript== // @name AddNewIssueButton // @namespace http://tampermonkey.net/ // @version 0.0.1 // @description Adds an issue creation button to GitHub repository pages. // @author zcf0508 // @match https://github.com/*/* // @icon https://www.google.com/s2/favicons?sz=64&domain=github.com // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const repoData = window.location.pathname.split('/'); const repoName = repoData[2]; const userName = repoData[1]; const repo = `${userName}/${repoName}`; const createButton = () => { const button = document.createElement('button'); button.textContent = 'Add Issue'; button.className = 'btn btn-primary'; button.addEventListener('click', () => { location.href = `https://github.com/${repo}/issues/new`; }); return button; }; const appendButton = () => { if (repoName && userName) { let parent = document.querySelector('.AppHeader-actions'); let issuesTab = document.querySelector('#issues-tab'); if (parent && issuesTab) { parent.appendChild(createButton()); } } }; // Use MutationObserver to ensure the button is added when the DOM changes const observer = new MutationObserver((mutationsList, observer) => { for (let mutation of mutationsList) { if (mutation.type === 'childList') { appendButton(); observer.disconnect(); // Disconnect after adding the button break; } } }); observer.observe(document.body, { childList: true, subtree: true }); // Fallback to DOMContentLoaded in case the DOM is already loaded document.addEventListener('DOMContentLoaded', appendButton); })();