您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为GitHub头添加仓库菜单。
当前为
// ==UserScript== // @name GitHub菜单 // @name:en GitHub Menu // @name:zh GitHub菜单 // @name:zh-CN GitHub菜单 // @namespace https://gf.zukizuki.org/zh-CN/users/331591 // @version 1.0.0 // @description 为GitHub头添加仓库菜单。 // @description:zh 为GitHub头添加仓库菜单。 // @description:zh-CN 为GitHub头添加仓库菜单。 // @description:en Add the repositories menu fot GitHub. // @author Hale Shaw // @match https://github.com/* // @match https://github.wdf.sap.corp/* // @icon https://github.githubassets.com/favicon.ico // @grant none // ==/UserScript== (function() { 'use strict'; const menuClassName1 = "d-flex flex-column flex-lg-row flex-self-stretch flex-lg-self-auto"; const menuClassName2 = "d-flex"; let menu = {}; let exploreText = ""; let menuItemClassName = ""; let flag = false; let domainName; const accountName = getAccountName(); getMenu(); addMenuItem(); /** * get the menu object by different class name. */ function getMenu() { if (document.getElementsByClassName(menuClassName1) && document.getElementsByClassName(menuClassName1)[0] != undefined) { menu = document.getElementsByClassName(menuClassName1)[0]; exploreText = menu.children[4].innerText; menuItemClassName = "js-selected-navigation-item Header-link mr-0 mr-lg-3 py-2 py-lg-0 border-top border-lg-top-0 border-white-fade-15"; flag = true; } else if (document.getElementsByClassName(menuClassName2) && document.getElementsByClassName(menuClassName2)[0] != undefined) { const menus = document.getElementsByClassName(menuClassName2); for (let i = 0; i < menus.length; i++) { const labelValue = menus[i].getAttribute("aria-label"); if ("Global" == labelValue) { menu = menus[i]; break; } } if (isEnterprise()) { exploreText = menu.children[2].innerText; } else { exploreText = menu.children[3].innerText; } menuItemClassName = "js-selected-navigation-item Header-link mr-3"; flag = true; } } /** * add menu item. */ function addMenuItem() { if (flag) { let repoText = "Repositories"; let watchText = "Watching"; let starText = "Stars"; let setText = "Settings" if ("探索" == exploreText) { repoText = "仓库"; watchText = "关注"; starText = "点赞"; setText = "设置"; } let repoUrl; let starUrl; const watchUrl = "https://" + domainName + "/watching"; const settingUrl = "https://" + domainName + "/settings/profile"; if ("" == accountName) { repoUrl = "https://" + domainName + "/HaleShaw?tab=repositories"; starUrl = "https://" + domainName + "/HaleShaw?tab=stars"; } else { repoUrl = "https://" + domainName + "/" + accountName + "?tab=repositories"; starUrl = "https://" + domainName + "/" + accountName + "?tab=stars"; } createMenuItem(repoText, repoUrl, menu); createMenuItem(watchText, watchUrl, menu); createMenuItem(starText, starUrl, menu); createMenuItem(setText, settingUrl, menu); } } /** * create menu item. * @param {String} name * @param {String} url * @param {Object} menu */ function createMenuItem(name, url, menu) { const menuItem = document.createElement("a"); menuItem.text = name; menuItem.className = menuItemClassName; menuItem.href = url; menu.appendChild(menuItem); } /** * get account name. */ function getAccountName() { const dropdownClassName = "dropdown-item"; let accountName = ""; if (document.getElementsByClassName(dropdownClassName) && document.getElementsByClassName(dropdownClassName)[0] != undefined) { console.log("There is already an account logged in."); let accountHref; const dropdownItems = document.getElementsByClassName(dropdownClassName); for (let i = 0; i < dropdownItems.length; i++) { const profileAttrValue = "Header, go to profile, text:your profile"; const attrValue = dropdownItems[i].getAttribute("data-ga-click"); if (profileAttrValue == attrValue) { accountHref = dropdownItems[i].href; break; } } const splitArr = accountHref.split("/"); accountName = splitArr[splitArr.length - 1]; console.log("The account is " + accountName); } return accountName; } /** * check if the domain is enterprise. */ function isEnterprise() { domainName = document.domain; if ("github.com" == domainName) { return false; } console.log("This is enterprise GitHub."); return true; } })();