您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a button to go from app.graphite.dev to github.com
// ==UserScript== // @name Github => Graphite button // @description Add a button to go from app.graphite.dev to github.com // @match http*://www.github.com/* // @match http*://github.com/* // @version 0.3.1 // @run-at document-start // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // @namespace https://www.github.com // ==/UserScript== const PATH_REGEX = /^\/([^\/]+)\/([^\/]+)\/pull\/([^\/]+).*$/; const SELECTOR = '[class^="gh-header-actions"]'; const addButton = (toolbar) => { const [_, org, repo, pr] = window.location.pathname.match(PATH_REGEX); const graphiteLink = `https://app.graphite.dev/github/pr/${org}/${repo}/${pr}/`; if (document.getElementById("graphiteLink") != null) { return; } const anchorEl = document.createElement("a"); anchorEl.setAttribute("id", "graphiteLink"); anchorEl.setAttribute("href", graphiteLink); anchorEl.setAttribute("target", "_blank"); anchorEl.setAttribute( "class", "Button--secondary Button--small Button" ); anchorEl.appendChild(document.createTextNode("Graphite ↗️")); toolbar.appendChild(anchorEl); }; const toolbarObserver = new MutationObserver((_, observer) => { const toolbar = document.querySelector(SELECTOR); if (toolbar) { observer.disconnect(); addButton(toolbar); } }); let lastPathname; const routeChangeObserver = new MutationObserver(() => { const { pathname } = window.location; if (pathname !== lastPathname) { lastPathname = pathname; if (pathname.match(PATH_REGEX)) { toolbarObserver.observe(document.body, { childList: true, subtree: true, }); } } }); routeChangeObserver.observe(document.body, { childList: true, subtree: true });