はてなスターのリンクをダイアリーに換えるgreasemonkey

なにこれ?

はてなダイアリーはてなブックマークについているはてなスターには、そのユーザがスターを付けたもの一覧ページへリンクされている。
が、そんな一覧みたくない。興味や嗜好がすぐにわかるその人のダイアリーが見たいのでスターのリンクを書き換えるgreasemonkeyスクリプトをつくった。

どうやって使うの?

firefoxのアドオンであるgreasemonkeyをインストールした後、下にあるhatena_star_link_diary.user.jsをクリックしてスクリプトをインストールしてください。

ソースコード

// ==UserScript==
// @name           hatena_star_link_diary
// @namespace      http://d.hatena.ne.jp/Cherenkov
// @include        http://*.hatena.ne.jp/*
// ==/UserScript==

var t = setInterval( function(){
    var stars = document.evaluate('//img[@class="hatena-star-star"]', document, null, 7, null);
    if(stars.snapshotLength){
        for(var i=0;i<stars.snapshotLength;i++){
            var star = stars.snapshotItem(i);
            star.parentNode.href = star.parentNode.href.replace('s', 'd');
        }

        innerStar();

        clearInterval(t);
    }
}, 500);


function innerStar(){
    var innerStars = document.evaluate('//span[@class="hatena-star-inner-count"]', document, null, 7, null);
    for(var i=0;i<innerStars.snapshotLength;i++){
        innerStars.snapshotItem(i).addEventListener("click", 

            function(){
                var r = setInterval( function(){
                    var innerStars = document.evaluate('//span[@class="hatena-star-inner-count"]', document, null, 7, null);
                    var stars = document.evaluate('//img[@class="hatena-star-star"]', document, null, 7, null);

                    if(!innerStars.snapshotLength){
                        for(var i=0;i<stars.snapshotLength;i++){
                            var star = stars.snapshotItem(i);
                            star.parentNode.href = star.parentNode.href.replace('s', 'd');
                        }
                    clearInterval(r);
                    }
                }, 500);
            }
        , false);
    }
}

インストール

hatena_star_link_diary.user.js

感想

  • 同じ変数を関数間で使いまわしたいときはどうすればいいんだろう。
  • 適当にインデントしただけでもそれなりにみえる(あれ?)。
  • @includeに追加すれば、はてな以外に表示させているはてなスターにも対応する。
  • はてなハイクについてるスターは、そのひとの発言一覧のページにいくようになってるんだなぁ。
  • このスクリプトは、はてなの思想に反しているのかもしれない。