blog.fuktommy.com

はてブ追加ページでタグが探しにくい

はてブの追加ページって、 自分が過去に登録したタグをワンクリックで入力できますけど、 タグを追加しすぎて探すのが大変です。 特に面倒なのが流行り物の扱いです。 アニメを放映中には「musashi」とかタグつけたりしますけど、 放映が終わって1年も経てば、 新しくmusashiタグをつけることもないし、 かといってmusashiタグを消すのもおかしいので、 どうしたものかなあと思っていました。

そんなこんなでいくつか試してみました。 パターン1。 ブックマーク一覧ページにある自分のつけたタグは、 そのタグをつけたエントリーの個数によって文字の大きさが変わるので、 それを読み込んできて同じように文字の大きさを変えたらどうか。

(function() {
    function resizeTags(text) {
        var dummy = document.createElement('div');
        dummy.innerHTML = text;
        var anchors = dummy.getElementsByTagName('a');
        var cloud = {};
        for (var i=anchors.length-1; i>=0; i--) {
            var a = anchors[i];
            if ((a.className == 'tag-latest') || (a.className == 'tag-later')) {
                cloud[a.innerHTML] = a.style.fontSize.substr(0, a.style.fontSize.length-2);
            }
        }

        var tags = $('tags_list').getElementsByTagName('span');
        for (var i=tags.length-1; i>=0; i--) {
            var tag = tags[i].innerHTML;
            if (cloud[tag]) {
                var size = (cloud[tag] - 8) * 5;
                if (size <= 0) {
                    size = 1;
                }
                tags[i].style.fontSize = '' + size + 'pt';
            }
        }
    }

    var request = new Ajax.Request(
        'http://b.hatena.ne.jp/' + Hatena.id,
        {
            'method': 'get',
            onComplete: function(req) {
                resizeTags(req.responseText);
            }
        }
    );
})();

やってみたら、あまり有効ではありませんでした。 数字をいじってタグの大きさを強調しているのですが((大きさ-8)*5)、 それでもあまり差が出ません。 もっと計算を工夫すればいいのかもしれませんが。

パターン2。 最新のページのタグの数で、同じようにしてみる。

(function() {
    function resizeTags(text) {
        var dummy = document.createElement('div');
        dummy.innerHTML = text;
        var span = dummy.getElementsByTagName('span');
        var cloud = {};
        for (var i=span.length-1; i>=0; i--) {
            if (span[i].className == 'tag') {
                var a = span[i].getElementsByTagName('a');
                if (! cloud[a[0].innerHTML]) {
                    cloud[a[0].innerHTML] = 1;
                } else {
                    cloud[a[0].innerHTML]++;
                }
            }
        }

        var tags = $('tags_list').getElementsByTagName('span');
        for (var i=tags.length-1; i>=0; i--) {
            var tag = tags[i].innerHTML;
            if (cloud[tag]) {
                var size = 10 + cloud[tag] * 5;
                tags[i].style.fontSize = '' + size + 'pt';
            }
        }
    }

    var request = new Ajax.Request(
        'http://b.hatena.ne.jp/' + Hatena.id,
        {
            'method': 'get',
            onComplete: function(req) {
                resizeTags(req.responseText);
            }
        }
    );
})();

統計の対象にするタグの数が少なすぎていまいち。

パターン3。 こうなったら自分で無視タグリストを管理する。 流行り物タグを登録していくわけですね。

(function() {
    var ignoreTags = [
        'musashi',
        'らきすた'
    ];
    var ignoreTable = {};
    for (var i=ignoreTags.length-1; i>=0; i--) {
        ignoreTable[ignoreTags[i]] = true;
    }
    var span = document.getElementById('tags_list').getElementsByTagName('span');
    for (var i=span.length-1; i>=0; i--) {
        var tag = span[i].innerHTML;
        if (ignoreTable[tag]) {
            span[i].style.display = 'none';
        }
    }
})();

これは割といい感じです。これでちょっと使ってみます。

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)