您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a Gist link to GitHub profile pages.
当前为
// ==UserScript== // @name GitHub Gist Link // @description Adds a Gist link to GitHub profile pages. // @icon https://github.githubassets.com/favicons/favicon-dark.svg // @version 1.0 // @author afkarxyz // @namespace https://github.com/afkarxyz/misc-scripts/ // @supportURL https://github.com/afkarxyz/misc-scripts/issues // @license MIT // @match https://github.com/* // @exclude https://gist.github.com/* // @grant none // @run-at document-idle // ==/UserScript== (function() { 'use strict'; function isProfilePage() { return /^\/[^\/]+\/?$/.test(window.location.pathname); } function addGistLink() { if (!isProfilePage()) return; const usernameElement = document.querySelector('.p-nickname.vcard-username'); if (usernameElement && !usernameElement.querySelector('.gist-link-userscript')) { const currentURL = window.location.pathname; const username = currentURL.split('/')[1]; const linkContainer = document.createElement('span'); linkContainer.className = 'gist-link-container'; const gistLink = document.createElement('a'); gistLink.href = `https://gist.github.com/${username}`; gistLink.textContent = 'Gist'; gistLink.className = 'Link--secondary gist-link-userscript'; gistLink.style.textDecoration = 'none'; linkContainer.appendChild(gistLink); linkContainer.appendChild(document.createTextNode(' · ')); usernameElement.insertBefore(linkContainer, usernameElement.firstChild); } } function observeForUsernameElement() { if (!isProfilePage()) return; const usernameObserver = new MutationObserver((mutations, observer) => { const usernameElement = document.querySelector('.p-nickname.vcard-username'); if (usernameElement) { addGistLink(); observer.disconnect(); } }); usernameObserver.observe(document.body, { childList: true, subtree: true }); } if (document.readyState === 'complete' || document.readyState === 'interactive') { addGistLink(); } else { document.addEventListener('DOMContentLoaded', addGistLink); } let lastUrl = location.href; const urlChangeObserver = new MutationObserver(() => { const url = location.href; if (url !== lastUrl) { lastUrl = url; if (document.querySelector('.p-nickname.vcard-username')) { addGistLink(); } else { observeForUsernameElement(); } } }); urlChangeObserver.observe(document, { subtree: true, childList: true }); window.addEventListener('popstate', function() { if (document.querySelector('.p-nickname.vcard-username')) { addGistLink(); } else { observeForUsernameElement(); } }); observeForUsernameElement(); })();