一番上のリンクにフォーカスをあてる

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();
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h