Hatena::ブログ(Diary)

gan2 の Ruby 勉強日記 このページをアンテナに追加 RSSフィード

この日記のはてなブックマーク数 PV/ 870421 Subscribe with livedoor Reader 役立つリンク集

2008-02-18

選択した文字で goo 辞書を引ける GreaseMonkey 3.2

ずいぶんと久しぶりのバージョンアップです。

今回は、検索にマッチした他の項目を表示する機能を実装しました。

fastlookupgoo3.2.user.js

今までのバージョンだと、例えば「空間」で検索したときに、検索ランキングのトップにあたる「空間」の結果しか表示しなかったのですが、今回の更新では、ランキングの2位以下にある「空間群」とか「空間芸術」だとかの他の候補も一緒に表示するようにしました。

一緒に表示するといっても項目名だけで、結果は表示されません。

画像で見るとこんな感じです。

http://farm3.static.flickr.com/2223/2274460684_df6668c964.jpg

このように左側にズラズラと表示されます。

気になる項目があったら、そこを範囲選択すればその項目のポップアップが追加されます。

また、前回の 3.1 で追加した機能もそのまま残してあります。

なので…

個々の項目は、タイトルの部分(緑色の本のマークのあたり)をクリックすることで消せます。

全ての項目を消したいときはポップアップと関係ないところをクリックすれば消せます。

何かおかしなところなどありましたらコメントなどで教えて頂けると助かります。


個人的なメモ

goo 辞書の検索ランキングの各項目には、「・(なかぐろ)」とか「ちっちゃい数字」とか「▼」とかの記号が入っていたりしますが、こいつらがすごく邪魔でした。

範囲選択したときに「・」などが入っていると検索がうまくいかないからです。

今回はJavaScript Unicode Charts - bkブログで紹介されていたPage not found - Macchiatoを使って、それらの邪魔な記号のコードポイントを調べ、str.replace(/\u30fb/g, ""/) などとして取り除きました。

\u30fb は「・」のコードポイントで、JavaScript では特殊文字をこのように指定するのが一般的なようです。


あともう1つ困ったのが、Wikipedia の検索結果です。

goo 辞書では Wikipedia の検索結果も一緒に表示してくれます。

表示されててもいいかな?とも思ったのですが、検索しても goo 辞書の項目にあるかどうか分からないものなので、今回は消すことにしました。

でもうまく消せなくてちょっと困りました。

removeChild を使ってあーだこーだやっていたんですが、なぜか消せなかった…たぶん僕のミスなんだろうな。。

それで結局は、XPath すげーで解決しました。

Latest topics > CSS3セレクタとXPathでの表現の対応表 - outsider reflexを見て、E[starts-with(@foo, bar)] って関数が使えることに気付いたらすぐに解決しました。

goo 辞書内の項目へのリンクは "search.php" で始まって、Wikipedia へのリンクは "/redir/go.php" で始まるので、a[starts-with(@href, "search.php")] のような XPath を使うことで差別化できます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/gan2/20080218/1203341798