読者です 読者をやめる 読者になる 読者になる

うならぼ

どうも。

UserScript楽しいって話(作例つき)

GreaseMonkeyって昔流行ったあれでしょ?みたいな印象を持ってたんですが、あれおもしろいですね。便利ですね。

すっかりChrome使いなのでTampermonkeyで動作確認しています。

便利な道具

ヒアドキュメント

UserScript界隈では <><![CDATA[ ... ]]></> という形式が使われていたようです。これは何かというと ECMAScript for XML という拡張で追加されていたXMLリテラルです。が、Firefoxでもだいぶ前に使えなくなっているし、見た目もちょっと強引すぎやしないか。

で個人的に気に入ったのは Function.toString() を使う方法。コメント部分も含めたソースコードが取得できるので、無名関数のコメントの中に文字列を書いておいて、正規表現で取り出す。toStringが使えるということだけ覚えておけばいいですしね。

ちなみにES6のtemplate stringsでは複数行の文字列が書けます。

@require

jQueryでもMustacheでも、任意のJSを読み込めます。便利ですね。cdnjsから探すことが多いです。

GM_addStyle

そうやって色々DOM構築するようになるとスタイリングが面倒になってきます。CSS使いたいよね。

GM_addStyle() という関数を使えば、CSSを追加できます。@resource に書いておいて GM_getResourceText() で読み込むもよし、埋め込むもよし。@grant GM_addStyle を忘れずに。

作例

Wikipediaで他言語版のリンクをh1の隣にもってくる

https://gist.github.com/unarist/788550b564fd5310d12f

日本語版のWikipediaを見ていて、翻訳が怪しいとかの理由で他の言語のWikipediaを見たくなることがよくあるので。サイドバーにリンク集あるけど、スクロールが面倒だし、山のような言語の中から目的の言語探すの面倒だし、という。

f:id:unarist:20160209150224p:plain

英語版とでタイトルの意味が変わってたり英語版の対応記事がなかったりすると、じゃあ日本語版とは記事構成が違うんだな?ということに気づいたりも。

アマゾンポチと入れさせない

https://gist.github.com/unarist/382f758edb10c4a46d02

一時期Amazonのツイートボタンからツイートすると「#アマゾンポチ と入れて@返信でカートに追加・後で買う」なんてテキストが自動でついて邪魔だったので、単純にページタイトルからテキストを設定するように。今はアマゾンポチは消えているようですが、「@amazonJPさんから」もついでに消せるのでそのまま使ってます。

リンク先をアフィリンクにできないかなーとちょっと考えたけどアフィリンク取得するのが面倒臭そうなので放置。

Transifexで原文と訳文をまとめてコピーする

https://gist.github.com/unarist/e58f7a051c285d614a89

----
transifex:123456789:https://transifex.com/projects/p/...
> English
> 英語
----

みたいな感じでコピーできるように。スタックオーバーフローの翻訳用。

PukiWikiの検索結果で「Comments/hogehoge」をまとめる

https://gist.github.com/unarist/6e4e55a1fafec9942024

とあるゲームの攻略Wiki全文検索かけるとコメントページが大量にヒットして邪魔なので。でも Comments/ ってプレフィックスは固定でもないみたいだし、他のサブページのことも考えると xx/yy 全般に使えるようにした方が便利そう。

PukiWikiの検索でハイライトされた部分の目次を作る

https://gist.github.com/unarist/7d17990b35ce1cb8d153

これも攻略Wikiで使うつもりで作ったはず・・・だけど具体的な用途が思い出せない程度に使ってない。

PukiWikiのコメントページでスレッド数・ノード数・流速を表示する

https://gist.github.com/unarist/21ecd989a43a4006b404

2000ノードほど書き込まれたらコメントページを新しくする、みたいなローカルルールが某所にあるので。

TODO

iPhoneSafariで使えないのが惜しい。ブックマークレットはメンテがつらい。