您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show PNG, GIF, JPG and SVG images inline on the GitHub's file list
// ==UserScript== // @name Repo tree: inline images // @namespace http://tampermonkey.net/ // @version 0.4 // @description Show PNG, GIF, JPG and SVG images inline on the GitHub's file list // @author Marcin Warpechowski // @match https://github.com/* // @grant none // ==/UserScript== (function() { 'use strict'; const pluginName = 'processed-by-warpech-inline-png-images'; let scheduledTimeout; function findAndApplyChanges() { console.log('Running... Repo tree: inline PNG images'); Array.from(document.querySelectorAll(`.repository-content .js-navigation-container a.js-navigation-open:not([${pluginName}])`)).forEach((elem) => { elem.setAttribute(pluginName, ''); if (elem.href.endsWith(".svg") || elem.href.endsWith(".png") || elem.href.endsWith(".gif") || elem.href.endsWith(".jpg") || elem.href.endsWith(".jpeg")) { const img = document.createElement('img'); let imgUrl = elem.href + '?raw=true'; img.setAttribute("src", imgUrl); img.style.maxWidth = '100%'; const imgLink = document.createElement('a'); imgLink.href = imgUrl; imgLink.appendChild(img); imgLink.style.display = 'block'; imgLink.style.padding = '20px'; img.style.minHeight = '1px'; const div = document.createElement('div'); div.appendChild(imgLink); div.style.background = '#eee'; const box = elem.closest('.Box-row'); box.parentNode.insertBefore(div, box.nextSibling) } }); } console.log('Postponing... Repo tree: inline PNG images'); scheduledTimeout = setTimeout(findAndApplyChanges, 1000); const targetNode = document.querySelector("div.application-main"); const observerOptions = { childList: true, subtree: true } const mutationCallback = (mutationList, observer) => { mutationList.forEach((mutation) => { switch(mutation.type) { case 'childList': console.log('Postponing... Repo tree: inline PNG images'); clearTimeout(scheduledTimeout); scheduledTimeout = setTimeout(findAndApplyChanges, 1000); break; } }); } const observer = new MutationObserver(mutationCallback); observer.observe(targetNode, observerOptions); })();