您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds click event and distinct hover style to collapsed code indicator
// ==UserScript== // @name Expand collapsed GitHub code blocks // @namespace http://tampermonkey.net/ // @description Adds click event and distinct hover style to collapsed code indicator // @match https://github.com/* // @version 1.3 // @grant GM_addStyle // ==/UserScript== // Use with violentmonkey // https://addons.mozilla.org/en-US/firefox/addon/violentmonkey/ // https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag?hl=en (function () { "use strict"; GM_addStyle(` .is-hovered.blob-code.blob-code-inner.blob-code-hunk { background-color: #ffedde !important; }`); makeCollapsedRegionsClickableAfterLoad(); })(); function makeCollapsedRegionsClickableAfterLoad() { let isLoading = false; const diffContainers = [ ...document.querySelectorAll(".js-diff-progressive-container"), ]; if (diffContainers.some((c) => showsLoadingIndicator(c))) { isLoading = true; } if (isLoading == true) { window.setTimeout(makeCollapsedRegionsClickableAfterLoad, 5); } else { makeCollapsedRegionsClickable(); } } function makeCollapsedRegionsClickable() { const expandables = document.querySelectorAll(".js-expandable-line"); expandables.forEach((expandable) => { let line = expandable.querySelector( ".blob-code.blob-code-inner.blob-code-hunk" ); line = recreateNode(line); line.style.cursor = "pointer"; line.addEventListener("click", () => expandCodeBlock(expandable)); }); } function expandCodeBlock(line) { line.querySelector(".blob-num-expandable").children[0].click(); window.setTimeout(makeCollapsedRegionsClickableAfterLoad, 800); } function showsLoadingIndicator(container) { return container.querySelectorAll(".diff-progressive-loader").length > 0; } function recreateNode(el, withChildren) { if (withChildren) { const clone = el.cloneNode(true); el.parentNode.replaceChild(clone, el); return clone; } else { var newEl = el.cloneNode(false); while (el.hasChildNodes()) newEl.appendChild(el.firstChild); el.parentNode.replaceChild(newEl, el); return newEl; } }