はてなブックマークの使い勝手が悪い件

はてなブックマークの新 version が公開されたので使ってみたので感想書く。一言でいうとしょんぼりした。というのもことごとく keyboardist にツラい仕様になっている ( LDRize と親和性のない自前 AutoPagerize や onmouseover event で出現させている item 編集・削除ボタン ) 。ここはまぁ beta 時に変更を追ってないおれが悪いんだけど。使うのやめようか迷ったけどそもそも被ブックマーク時にコメント見にいくくらいで能動的には使ってなかったので考えるべき事じゃなかった。

まず AutoPagerize は自前で SITEINFO 書けばいいだけなんだけど wedata に上げると LDRize 使ってないひとの迷惑になるので上げられない。というわけでここに晒すんだけど環境ごとにいちいち書いていかなきゃならないとかめんどう以外の何者でもないのでどうにかしたい。 pager 使うほど見るかといわれると見ないんだが。

    {
        url:          '^http://b\\.hatena\\.ne\\.jp/[^/]+/',
        nextLink:     '//a[contains(concat(" ", @class, " "), " pager-next ")]',
        pageElement:  'id("bookmarked_user")/li',
        exampleUrl:   'http://b.hatena.ne.jp/janus_wel/?of=50',
    },

で、 LDRize SITEINFO は書いて master wiki に反映したんだけど LDRize の cursor が favicon とかぶってしまって視認性よろしくない。まぁこれは scroll で大体どこにカーソルがあるかわかるからいいんだけど。あと favicon 部分の css 指定が甘い気がする。 background-image で画像出してるみたいなんだけどたぶん background-repeat 指定してないんじゃないかな。 multi_requester.js で :mr hatena-bookmark http://d.hatena.ne.jp/janus_wel/ ってひっぱってくると以下のように favicon が敷き詰められてるんだけど。

あと、編集・削除ボタンをどうにかしようと思って以下の Greasemonkey script を書いたんだけど大域変数を参照してるみたいで 'エラー: parent.getElementsByTagName is not a function' てな error が出る。お手上げ。

// ==UserScript==
// @name           hatebu is gentle for keyboardist isn't it ?
// @namespace      http://d.hatena.ne.jp/janus_wel/
// @description    display edit, delete button
// @include        http://b.hatena.ne.jp/*
// ==/UserScript==

( function () {
if (unsafeWindow.Hatena) {
    var Hatena = unsafeWindow.Hatena;

    var mines = $s('//li[contains(concat(" ", @class, " "), " mine ")]');
    for (var i=0, l=mines.length ; i<l ; ++i) {
        var m = mines[i];
        var code = m.getAttribute('onmouseover');
        GM_log(code);
        eval(code);
        m.removeAttribute('onmouseover');
    }
}

function $s(query, node) {
    node = node || window.content.document;
    var result = (node.ownerDocument || node).evaluate(
        query,
        node,
        null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null
    );
    var nodes = [];
    for(var i=0 ; i<result.snapshotLength ; ++i) nodes.push(result.snapshotItem(i));
    return nodes;
}
})();