您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Annoyed that ^F does not work in long github discussions? Tired from clicking "Load more" over and over again? This extension is for you! Automatically loads all comments and diffs on github.com
// ==UserScript== // @name GitHub no more // @namespace http://tampermonkey.net/ // @version 2025-08-28 // @description Annoyed that ^F does not work in long github discussions? Tired from clicking "Load more" over and over again? This extension is for you! Automatically loads all comments and diffs on github.com // @author wffl // @match https://github.com/*/*/issues* // @match https://github.com/*/*/pulls* // @match https://github.com/*/*/pull/* // @match https://github.com/issues* // @match https://github.com/pulls* // @run-at document-idle // @icon https://www.google.com/s2/favicons?sz=64&domain=github.com // @license https://github.com/WaffleLapkin/github-no-more/blob/meow/LICENSE.md // ==/UserScript== (function() { 'use strict'; const find_buttons = (f) => Array.from(document.getElementsByTagName("button")).filter((e) => // HACK: "new" github UI doesn't remove the button once clicked. // `.ariaDisabled` is the only way I found to check if the button was already clicked. // (otherwise clicking would cause updates, which would cause clicking... -> infinite loop) e.ariaDisabled !== "true" && f(e.textContent) ); async function expandAllLoads(mutations) { // If a text or button node was added if (!mutations.some((m) => Array.from(m.addedNodes).some((n) => n.nodeName === "#button" || n.nodeName === "#text"))) { return } // Click on all the "Load more…" and its variations buttons let loads = find_buttons((text) => text.includes("Load more…") || text.includes("Load diff") || text.includes("Load all") || (text.includes("Load ") && text.includes(" more")) // "Load 150 more" ); loads.forEach((b) => b.click()); } let observer = new MutationObserver(expandAllLoads); observer.observe(document.body, { childList: true, subtree: true }); })();