MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

kotobank.jp, Yahoo!百科事典に擬似的な「おまかせ表示」機能を付けるユーザスクリプト

Wikipediaでは「おまかせ表示」といって、Wikipedia内のページにランダムで飛ぶ機能があります。暇つぶしをするときにこの機能を使用している方もいるかと思います。しかし、Yahoo!百科事典や最近出てきたkotobank.jpにはこの機能がありません。しょうがないので、ユーザスクリプトを書いてみました。
ただ、表題で断っているとおり擬似的なおまかせ表示です。仕組みは簡単で、サイトに張ってあるリンクの中から辞書のページと思われるリンクのリストを作成します。そのリストからランダムでリンクを選択し、いくつか張るという仕組みになっています*1

ユーザスクリプト(Yahoo!百科事典)

http://userscripts.org/scripts/show/47735

bookmarklet(kotobank.jp)

javascript:(function(){var%20candidates%20=%20new%20Array;var%20current=String(document.location).match(/\/word\/(.+)$/)%20?%20String(document.location).match(/\/word\/(.+)$/)[1]%20:%20"^z";for(i=0;i<document.links.length;i++){link=String(document.links[i]);if(link.match(/^http:\/\/kotobank\.jp\/word\//)){if(link.match(current)){;}else{candidates.push(link);}}}if(candidates.length==0){location.href="http://kotobank.jp/";}else{location.href=candidates[Math.floor(candidates.length*Math.random())];}})();

bookmarklet(Yahoo!百科事典)

javascript:(function(){var%20candidates%20=%20new%20Array;var%20current=String(document.location).match(/\/detail\/(.+)\//)%20?%20String(document.location).match(/\/detail\/(.+)\//)[1]%20:%20"^z";for(i=0;i<document.links.length;i++){link=String(document.links[i]);if(link.match(/^http:\/\/100\.yahoo\.co\.jp\/detail\//)){if(link.match(/%EF%BC%BB%E7%94%BB%E5%83%8F%EF%BC%BD/)%20||%20link.match(current)){;}else{candidates.push(link);}}}if(candidates.length==0){location.href="http://100.yahoo.co.jp/";}else{location.href=candidates[Math.floor(candidates.length*Math.random())];}})();

ユーザスクリプトの説明

スクリプトをインストール後に、それぞれのサイト(kotobank.jp, Yahoo!百科事典)に行ってください。kotobank.jpはアクセスランキングの下に、Yahoo!百科事典は検索欄の上か下にリンクができています。

kotobank.jpはデフォルトで3つ、Yahoo!百科事典は2つリンクができていますので、いずれかを選んでください。Wikipediaの「おまかせ表示」と同様にアクセスキーを使うことができます。Shift-Alt-xを押してください。
リンクが複数あるのは、ランダムに選ぶとどうしても一度訪れたページが出てくることを回避するためです。リンクが青くなっている方を選べばまだ訪れていないページに飛ぶことができます。またその数が違うのは、私が実験したところkotobank.jpのほうが前訪れたページが一度出る可能性が高かったからです。特に、アクセスランキングと今日のキーワードが目立ちます。
Greasemonkey, Greasemetal, Operaで動作確認済みです。ただし、Operaはアクセスキーを使うことができません。これは、アクセスキーの選択肢の処理がユーザスクリプトを読み込む前に終了しているためだと思われます。この辺は改善してほしいところです。

bookmarkletの説明

実行すれば、目的の百科事典サイトにいない場合はそこに飛びます。目的の百科事典サイトにいる場合は今のページに張ってあるリンクから、そのサイト内に飛ぶリンクのいずれかをランダムに選択し、遷移します。

*1:kotobankはデフォルトで3つ、Yahoo!百科事典は2つ