Infoseek 辞書色々 bookmarklet
Firefox など mozilla 系ブラウザ(確認は Firefox 1.0.3 でのみ)および Safari 用ですが、Safari 1.3 は英和辞書のみ使えます。Safari 1.3 用を作る予定はありませんが、下記をご覧下さい。
以下に列挙するリンクで使用したいものをブックマークツールバーにドラッグ&ドロップしてブラウザのブックマークに登録してください。使うときは調べたい語をブラウザで選択状態にして、そのブックマークを開きます。そうすると新しいウィンドウが開いて辞書検索結果が表示されます。
- 英和辞書
-
- 和英辞書
-
- 国語辞典
-
- カタカナ語辞典
-
前方一致
、後方一致
、完全一致
、全文検索
についてはエントリ「Infoseek の国語辞典を引く bookmarklet」をご覧下さい。
この bookmarklet を元に Safari 1.3 用を作成する方法について説明します。
- bookmarklet の本体の html ファイル(isdic.html)とそれがロードするJavaScript ファイル(isdic.js)をダウンロードする。
- isdic.js の 122 行目の
value = unescape(RegExp.$1); を value = unescape(unescape(RegExp.$1)); と書き換えて保存する。
- isdic.html と isdic.js を同じ場所にアップロードする。
- このエントリの bookmarklet をブックマークする。
- そのブックマークの 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
以下、類似エントリです。