您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
turn bug references into clickable links
当前为
// ==UserScript== // @name Linkify commit comments (perl5.git.perl.org) // @namespace [mauke]/perl5.git.perl.org // @description turn bug references into clickable links // @match http://perl5.git.perl.org/perl.git/commit/* // @match https://perl5.git.perl.org/perl.git/commit/* // @match http://perl5.git.perl.org/perl.git/commitdiff/* // @match https://perl5.git.perl.org/perl.git/commitdiff/* // @grant none // @version 1.0.0 // ==/UserScript== 'use strict'; function xpath(expr, doc) { doc = doc || document; return doc.evaluate(expr, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); } let ts = xpath('//*[name()="div" and (@class="page_body" or @class="header")]//text()'); for (let i = 0; i < ts.snapshotLength; ++i) { let t = ts.snapshotItem(i); let text = t.nodeValue; let prev = 0; let frag = document.createDocumentFragment(); let re = /(?:#|(?:bug|perl)\s+(?:#|(?=\d{2})))(\d+)/ig; let m; while ((m = re.exec(text))) { let pre = text.slice(prev, m.index); if (pre !== '') { frag.appendChild(document.createTextNode(pre)); } let a = document.createElement('a'); a.href = 'http://rt.perl.org/rt3/Public/Bug/Display.html?id=' + m[1]; a.appendChild(document.createTextNode(m[0])); frag.appendChild(a); prev = re.lastIndex; } if (!frag.hasChildNodes()) { continue; } let fin = text.slice(prev); if (fin !== '') { frag.appendChild(document.createTextNode(fin)); } let p = t.parentNode; //p.insertBefore(frag, t.nextSibling); //p.removeChild(t); p.replaceChild(frag, t); }