Googleの検索結果からキーワードハイライトするGreasemonkey Script

先々週くらいからコツコツと書いていたキーワードハイライトするGreasemonkey Script(もしくは UserJavaScript)をリリースします。
word highlight for Greasemonkey

今のところ、Opera9.5+(Operaで使う場合はファイル名をword_highlight.jsで保存してください。.userはつけないでください)、Firefox3+、Google Chrome2(Devリリース)、WebKit Nightlyあたりで動作します。Safari3、4は後で対応するかも。

検索語を強調表示&ショートカットが快適なグリモンスクリプト :教えて君.netで紹介記事頂きました。ありがとうございます。記事書くのすげー早い。しかも、要点書いてあるし、画像付きでわかりやすいし、ほんと嬉しいです。

特徴

  • 高速(だと思う)
    • XPathを使って検索するので、結構高速(800KBあるデカいページで4ワード200件ヒットさせてFirefoxで270ms、Opera10で170msとか)
  • ハイライトの維持
    • window.nameにキーワードを保存していて、ページを遷移してもハイライト状態が保存されます。
  • AutoPagerize対応
  • キーボード操作対応(Minibuffer)
    • Minibufferが入っている人は(Alt or Meta)+[nN]でキーワードを移動できます。また、バッファを開いて「keyword-search 任意のキーワード」と打てばハイライトを追加できます。
    • Minibufferが入っていない場合は、[nN]だけでキーワードを移動できます。また、/Ctrl+/と打てば簡易バッファが開いてインクリメンタルサーチが出来ます。実はMinibufferが入っていない状態のほうが高機能です。
    • 今のところFirefoxの場合はMinibufferとセットで、それ以外はスタンドアローンで使うことを想定しています。

ハイライト時はGoogle Toolbar for Firefoxを参考に、layerタグでテキストをマークアップしています。Style指定はCSSなので、Stylishとかで変更可能だと思います。

TODO

  • XHTML対応
  • キーカスタマイズ

更新メモ*1

  • word highlight ver1.0.6 - 0xFF
  • editモード時のフォーカス修正。Enter押したら確定するように修正。
  • 検索開始は/だとデフォルトのクイックサーチを潰してしまうので、Ctrl+/に変更してみました。まあ、結局ほかの何かと衝突しそうだけど…。あと、ESCでキャンセルとか。
  • ダブルクオートがあるとエラー出てたのを修正
  • 上下ボタンがスペースを取り過ぎているのが気になったので、マウスオーバーするとボタンが出てくるようにしてみました。
  • Ctrl+/検索から入力したキーワードがページ遷移後も保持されるように修正
  • @versionつけた(1.0.1)
  • XHTML暫定対応(Thx! nanto_vi)
  • Google Chrome2.0.170対応(window→contentWindow)
  • XPathExpressionのキャッシュ(createExpression)
  • テキストインプットのサイズ調整
  • s/editer/editor/
  • Safari3/4に暫定対応
  • @version 1.0.2
  • ORはハイライトしないように修正
  • 新しいタブで開くとハイライトされない問題を修正(デフォルトで別タブでリンクを開くように変更)
  • @version 1.0.5

まだまだバグがあるかもしれませんので、何かありましたらコメントなど頂ければと。

*1:TwitterGreasemonkeyスクリプトスレなどでフィードバックを頂いたので、(今日ぐらいまで)随時更新で対応しています。