HaH はどうも最上解では無い気がする…ということで色々考えてます。 w3m だと、見ている場所にカーソルがあることが多いので、サイトを見ていてリンクをたどりたくなれば、タブと NEXT_(UP|DOWN|RIGHT|LEFT) でひょいひょいと移動すればいいんですが、 Firefox の場合見ていた場所にリンクがあるとは限らない。むしろ上の方にフォーカスがあって、タブ押したらわけわからんところに飛んだ!ってこと多い気がします。また、 Google なんかでは上の方にフォームがあるために、かなりタブ連打しないと目的のリンクに辿れない、ということもあります。
というわけで作ったのが画面に表示されてる中で、一番上のリンクにフォーカスを移動するこの機能です。例のごとく、 keyconfig と functions for keyconfig を使って、適当なキーに割当てしてやっています。
function getElementPositionY(e) { var y = 0; while (e.offsetTop) { y += e.offsetTop; e = e.offsetParent; } return y; } var w = _f4kcGetFocusedWindow(); var up = w.pageYOffset; var elems = w.document.getElementsByTagName('a'); var minDy = -1; var minElem; for (var i = 0; i < elems.length; i++) { var y = getElementPositionY(elems[i]); var dy = y - up; if (dy >= 0 && (minDy == -1 || dy < minDy)) { minDy = dy; minElem = elems[i] } } minElem.focus();