您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enhances GitHub repository pages with buttons to view active forks and open the repo in a VSCode-like interface.
// ==UserScript== // @name GitHub Enhanced Repo Buttons // @version 1.0 // @description Enhances GitHub repository pages with buttons to view active forks and open the repo in a VSCode-like interface. // @license MIT // @author Mobile46 // @match https://github.com/*/* // @icon https://www.google.com/s2/favicons?domain=github.com&sz=32 // @namespace https://greatest.deepsurf.us/users/1466082 // ==/UserScript== (function() { 'use strict'; function isValidRepoPage() { const path = window.location.pathname.split('/'); return path.length >= 3 && !path[3]; } function getRepoInfo() { const path = window.location.pathname.split('/'); if (path.length >= 3) { return { owner: path[1], repo: path[2] }; } return null; } function addButtons() { if (!isValidRepoPage()) { return; } const repoInfo = getRepoInfo(); if (!repoInfo) { console.log('Could not extract repo info'); return; } const actionsArea = document.querySelector('.pagehead-actions'); if (!actionsArea) { console.log('Actions area not found'); return; } const forksLi = document.createElement('li'); const forksButton = document.createElement('a'); forksButton.className = 'btn-sm btn'; forksButton.setAttribute('data-view-component', 'true'); forksButton.href = `https://techgaun.github.io/active-forks/index.html#${repoInfo.owner}/${repoInfo.repo}`; forksButton.target = '_blank'; forksButton.rel = 'noopener noreferrer'; forksButton.innerHTML = ` <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> Active Forks `; forksLi.appendChild(forksButton); const vscodeLi = document.createElement('li'); const vscodeButton = document.createElement('a'); vscodeButton.className = 'btn-sm btn'; vscodeButton.setAttribute('data-view-component', 'true'); vscodeButton.href = `https://github1s.com/${repoInfo.owner}/${repoInfo.repo}`; vscodeButton.target = '_blank'; vscodeButton.rel = 'noopener noreferrer'; vscodeButton.innerHTML = ` <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code mr-2"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L13.69 8 10.22 4.53a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018ZM4.72 3.22a.75.75 0 0 1 1.06 1.06L2.31 8l3.47 3.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-4.25-4.25a.75.75 0 0 1 0-1.06l4.25-4.25Z"></path> </svg> View in VSCode `; vscodeLi.appendChild(vscodeButton); actionsArea.appendChild(forksLi); actionsArea.appendChild(vscodeLi); } addButtons(); const observer = new MutationObserver(() => { if (document.querySelector('.pagehead-actions') && !document.querySelector('a[href*="techgaun.github.io/active-forks"]') && !document.querySelector('a[href*="github1s.com"]')) { addButtons(); } }); observer.observe(document.body, { childList: true, subtree: true }); })();