つい☆すたのブックマークレット版

id:os0xさん作のつい☆すたの、Twitterの発言にはてなスターを付ける機能だけをブックマークレットにしてみました。以下注意事項とか。

  • プロテクトの判別をしていないのでAdd Starは計画的に。
  • http://twitter.com/homeでしか動作確認していない。
  • Fx 2.0.0.6、Opera 9.23、IE6で動作確認した。

ソースとJSActionsでの下書き

prototypeをいじってある奴がJSActionsで動かなかったりしたので、ブックマークレットとはちょっと違うけど大筋同じ。クロージャの引数をもっと増やせば1バイトずつ減らせるけどIEで動いたのでストップ。

javascript:(function(d,s,p,C,e,t){s=d.createElement('script');s.src='http://s.hatena.ne.jp/js/HatenaStar.js';s.charset='utf-8';d.body.appendChild(s);p=setInterval(function(){if(Ten){clearInterval(p);C=d.getElementsByClassName;e=Hatena.Star.EntryLoader;with(e){loadEntries=function(){return C('content').map(function(T){t=C('entry-title',T)[0];return {uri:C('entry-date',T)[0].href,title:t.innerHTML.strip().stripTags(),star_container:t,comment_container:t}})};new e}}},9)})(document);
(function () { with (window) {
    var s = document.createElement('script');
    s.src = 'http://s.hatena.ne.jp/js/HatenaStar.js';
    s.charset = 'utf-8';
    document.body.appendChild(s);

    var pid = setInterval(function () {
        if (typeof Ten != 'undefined') {
            clearInterval(pid);
            var $c = document.getElementsByClassName;
            var e = Hatena.Star.EntryLoader;
            with (e) {
                loadEntries = function () {
                return Array.map($c('content'), function (td) {
                    var link  = $c('entry-date', td)[0].href;
                    var meta  = $c('meta', td)[0];
                    var title = $c('entry-title', td)[0];
                    return {
                        uri: link,
                        title: new String(title.textContent).strip(),
                        star_container: meta,
                        comment_container: meta
                    };
                });
            };
            new e;
            }
        }
    }, 100);
}})();