Docufarmをもっと活用するためのUserJS
Tuesday, 12. June 2007, 15:17:29
現在Docufarmはサービスを終了しています。PDFについてはlevaさんの提供するツールを代わりに使用することができます。涼崎さんがブックマークレットを公開していますのでこちらも併せてご覧下さい。
Hidetoさんのエントリーを見て感動したのでUserJSにしてみた。Docufarm素晴らしい。
導入すると概ね良い具合にリンクをDocufarmへ飛ばすようになるはずです。トリッキーなことはしていないので、Greasemonkeyとしても動作するかと思いますが、こちらは未確認。
redirectToDocufarm.user.js
よく考えたらこれってブックマークレットで良いよね、という事に気づいた。で、できたのがこんなブックマークレット。
javascript:(function(){var e=new Array('pdf','ppt','doc','rtf','ps');var l;for(var i=0;l=document.links[i];i++){if (l.href.indexOf('www.docufarm.com')<0){for(var j=0;j<e.length;j++){if(l.href.lastIndexOf(e[j])>=1){l.href='http://www.docufarm.com/view.jsp?url='+l.href;break;}}}}})();
残念ながらブックマークレットをそのままmy.operaには書けないようなので別の場所に作っておく。
以下に一応古い内容も残しておく。
一般的にはこれを使うのがよいでしょう。が、常時リンクをスキャンするのはレスポンスの低下を招く。そんなわけで僕は以下のUserJSを導入している。
redirectToDocufarm_manual.user.js
こちらはグローバル変数を汚染するのであまり美しくはない。けれど、こちらのUserJSでは任意のタイミングでリンクの書き換えを行えるようになる。具体的には、javascript:kurumanorg_redirectToDocufarm();を読み込んだとき。毎度毎度PDFやPPTを見るわけではないので、こういった方法の方がスマートな気がするのです。
ところで、これ書いてるときにこんな風にソースを書きたい衝動に駆られた。
if (typeof(kurumanorg) == 'undefined') {
function kurumanorg() {};
}
要するに複数のUserJSで定義するメソッドをすべて一つの変数の下に置きたいなぁ、と。すべてのUserJSの冒頭で未定義の時にのみkurumanorgとか云う謎関数をさっきのコードのような雰囲気で定義して、そのほかはすべてprototypeでぶら下げれば何となくきれいな気がする。けど、良い方法が浮かばなかった。



Hideto # 13. June 2007, 15:50
Kuruma # 20. June 2007, 07:39
ほんとこれは気持ちいいです。