caret@hint

Hit-a-Hint もどきに続き,Caret Hint もどきを作った。
caret@hint · GitHub

javascript:"caret@hint",['http://gist.github.com/230771.txt',function(d){d.body.appendChild(d.createElement('script')).src=this[0]}][1](document)
機能
  • ヒントで選んだテキストノードの先頭か末尾にキャレットを移動
    • シフトキー同時押しで選択(既存の選択範囲は維持)
    • 可能ならキャレットモードに移行
  • おまけで複数選択と選択解除
実装

拾うテキストノードの条件は以下の通り。

  1. 非空白文字を含む
  2. <option>/<button> の子孫で無い
  3. :first-child 又は直前要素が空

テキストノードの座標をうまく求める方法が分からず,ヒントは直近の要素に付けている。条件3で要素の決定と重複防止。

蛇足

キャレットモードのままにしておくと色々困るので,autoContentFocus.uc.js に一行加えてタブ移動時に自動解除するようにした。