「JP ISBN Linker」を公開した
ISBN文字列をダブルクリックするとAmazon.co.jpの該当書籍ページが開くグリモン「JP ISBN Linker」を公開しました。
初めは、以前書いたグリモン「bk1 - Add Amazon Link」(bk1の書籍詳細ページにAmazonへのリンクを追加する)のまずい点を直そうと思っていたのですが、動作ページをbk1に限定する必要がないことに気づき、現在の形に収まっています。結局「bk1 - Add Amazon Link」は、obsoleteとしました。
ちょっとだけ技術的な話
Piroさんが超絶便利アドオン「テキストリンク」の資料で書かれている:
今のバージョンでは、選択範囲の含まれているテキストノードだけが検索対象になるので、URI文字列の一部だけが強調されているといった場合などに「ユーザーの目に見えている」URI文字列を正しく取得できません。
XUL Apps > Documentations > テキストリンクの紹介 - outsider reflex
という問題に、私も同じくぶち当たりました。Piroさんはとっくに解決されているので、テキストリンクのコードを参考にすれば早いのでしょうが、こういう課題を自力で解くのが好きという因果な性格なので、数日かけて(えー)ロジックを考えた次第です。
具体的には、window.getSelection().getRangeAt(0)をじわじわ広げていき、選択箇所付近のISBNっぽい文字列を特定させています。また広げる際には、前後のテキストノードにポインタを移すよう考慮しました。どんなもんでしょうかね。
追記(2010-02-16)
実際に使ってみるとダブルクリックすら面倒だったので、マウスによる範囲選択時にも発動するようにしてみました(onmouseupで捕捉)。私は快適です。