2005年04月22日 (金)

Infoseek 辞書色々 bookmarklet

以前エントリした「Infoseek の国語辞典を引く bookmarklet」をお使いの奇特な方、英和辞典もやってくれという方(私自身)のために 国語 英和 和英 カタカナ 漢字 - infoseek マルチ辞書 の漢字辞典以外をサポートした bookmarklet を公開します。

Firefox など mozilla 系ブラウザ(確認は Firefox 1.0.3 でのみ)および Safari 用ですが、Safari 1.3 は英和辞書のみ使えます。Safari 1.3 用を作る予定はありませんが、下記をご覧下さい。

以下に列挙するリンクで使用したいものをブックマークツールバーにドラッグ&ドロップしてブラウザのブックマークに登録してください。使うときは調べたい語をブラウザで選択状態にして、そのブックマークを開きます。そうすると新しいウィンドウが開いて辞書検索結果が表示されます。

英和辞書
和英辞書
国語辞典
カタカナ語辞典

前方一致後方一致完全一致全文検索についてはエントリ「Infoseek の国語辞典を引く bookmarklet」をご覧下さい。

Safari 1.3 用の bookmarklet を作るには

この bookmarklet を元に Safari 1.3 用を作成する方法について説明します。

  1. bookmarklet の本体の html ファイル(isdic.html)とそれがロードするJavaScript ファイル(isdic.js)をダウンロードする。
  2. isdic.js の 122 行目の value = unescape(RegExp.$1);value = unescape(unescape(RegExp.$1)); と書き換えて保存する。
  3. isdic.html と isdic.js を同じ場所にアップロードする。
  4. このエントリの bookmarklet をブックマークする。
  5. そのブックマークの URL 中の http://homepage.mac.com/yuji_okamura/bookmarklet/isdic.html をアップロードした isdic.html の URL に書き換える。

解説します。Safari 1.3 では bookmarklet の URL 中の JavaScript 関数 escape の動作が間違っています。与えられた文字列の中の %-escape すべきマルチバイト文字を %-escape してから、文字列全体を %-escape しています。つまり部分的に %-escape が二重にかけられてしまうのです。かと言って escape 関数を使わないと生の文字列となり取得元の文字コード依存になってしまいます。このため escape 関数を使うと不正確なため常に正しく処理することが不可能となり、escape 関数を使わないと文字コードを判定してコード変換する処理が必要になって非現実的です。この bookmarklet では検索に日本語が用いられる場合は、その全ての文字が日本語である場合がほとんどでしょう。ですから受け取り側で二回 %-escape をデコードすればほぼ問題ありません。

追記

bookmarklet 修正

エントリ「homepage.mac.com が URL エンコードに関して仕様変更の模様」に記載したことに基づいて bookmarklet の内容を変更しました。この bookmarklet をブックマークしている方は再度ブックマークしてください。

encodeURIComponent を使用するように変更

古いブラウザにも対応できるように暫定的に escape を二回使うしていましたが、encodeURIComponent を使用するように変更しました。この方が色々と都合が良いので。済みませんがこの bookmarklet をブックマークしている方は再度ブックマークしてください。


Posted: 15:52    | Comment | Trackback


以下、類似エントリです。