Greasemonkeyスクリプトの末尾に?.user.jsを付けるスクリプトを汎用的に使えるようにした(SITEINFO)
os0x's
gist: 2000 — Gist
に、gist.github.comにピンポイントで使えるものがあったのだけど、もう少しいろんなサイトで使いたかったから僕も書いた。
アドレスが.user.jsで終わるものに?をつけるGreasemonkeyスクリプト - 素人がプログラミングを勉強するブログの応用。
SITEINFOの書き方とか:
- urlには、使いたいサイトの正規表現もしくは文字列を書く。文字列の場合は先頭一致。
- linkには、書きかえたいリンクのCSSセレクタを書く。
- textには、textContentを取得したいCSSセレクタを書く。省略するとlinkのtextContentが使われる。
- patternには、textにテストさせたい正規表現を書く。省略すると/\.user\.js$/が使われる。
// ==UserScript== // @name GMInstallHelper // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // ==/UserScript== (function() { const SITEINFO = { github: { url: "http://github.com", link: "#files .actions > a", text: "#path", pattern: /\.user\.js\s*$/ }, gist: { url: "http://gist.github.com/", link: "#files .actions > a:last-child", text: ".info > span" } }; var info = null; for each(var i in SITEINFO) if (typeof i.url == "string") { if (location.href.indexOf(i.url) == 0) { info = i; break; } } else { if (i.url.test(location.href)) { info = i; break; } } if (!info) return; var link = document.querySelector(info.link); if (!link) return; var text; if (info.text) { var textElem = document.querySelector(info.text); if (!textElem) return; text = textElem.textContent || ""; } else { text = link.textContent || ""; } if ((info.pattern || /\.user\.js$/).test(text)) link.href += "?.user.js"; })();