ユニークスター数
by
pacochi
2010-08-27 [2010/08/27 15:48:31]
一人一星でスターをカウントします。ページをあらかた読み込み終わった後に実行して下さい。
@@ -5,47 +5,42 @@
* @license MIT License
*/
-(function () {
+/*
+スターの多いページでは、実行結果が出るまで時間がかかります。まずはスターの少なめなページで動作確認をして下さい。
-if (typeof(Hatena) == "undefined" || !Hatena.Star) return;
+IE 系タブブラウザで実行する場合、ものによってはエンコード後の文字数でカウントされて、文字数オーバーになったりするみたいです。
+スクリプトが実行されない場合は、下の「Packed」というリンクの内容に javascript: を付けたものに置き換えて下さい。
+*/
-var i, e = Hatena.Star.EntryLoader.entries;
-// スターが多すぎるページ向けの強制リセット、乱暴。
-if (Ten.JSONP.Callbacks.length) Ten.JSONP.Callbacks = [];
-
-for (i = 0; i < e.length; i++) {
+if (typeof(Hatena) == "object") (function () {
- e[i].bmlS = function() {
+var i, e, s = Hatena.Star, t = Ten.JSONP;
+// スターが多すぎるページ向けの強制リセット、乱暴。
+// if (t.Callbacks.length)
+ t.Callbacks = [];
- new Ten.JSONP(Hatena.Star.BaseURL + "entry.json?uri=" + encodeURIComponent(this.uri), this, "bmlR");
-
- };
+if (s && (e = s.EntryLoader.entries)) for (i = 0; i < e.length; i++) {
e[i].bmlR = function(r) {
- if (!r.entries.length) return;
-
- r = r.entries[0];
+ if (r = r.entries[0]) {
- var i, e, t = 0, n = {}, c = r.colored_stars, s = r.stars;
- e = (s) ? s : [];
+ var i, e, t = 0, n = {}, c = r.colored_stars, s = r.stars;
+ e = s ? s : [];
- if (c) for (i = 0; i < c.length; i++) e = e.concat(c[i].stars);
+ if (c) for (i = 0; i < c.length; i++) e = e.concat(c[i].stars);
- for (i = 0; i < e.length; i++) if (!n[e[i].name]) {
+ for (i = 0; i < e.length; i++) if (!n[e[i].name] && ++t) n[e[i].name] = 1;
- n[e[i].name] = 1;
- t++;
+ // alert(this.uri + " : " + t);
+ this.star_container.appendChild(document.createTextNode(t))
}
-// alert(this.uri + " : " + t);
- this.star_container.appendChild(document.createTextNode(t));
-
};
- e[i].bmlS();
+ new t(s.BaseURL + "entry.json?uri=" + encodeURIComponent(e[i].uri), e[i], "bmlR")
}
-})();
+})()
/*
* @title ユニークスター数
* @description 一人一星でスターをカウントします。ページをあらかた読み込み終わった後に実行して下さい。
* @include http://*
* @license MIT License
*/
/*
スターの多いページでは、実行結果が出るまで時間がかかります。まずはスターの少なめなページで動作確認をして下さい。
IE 系タブブラウザで実行する場合、ものによってはエンコード後の文字数でカウントされて、文字数オーバーになったりするみたいです。
スクリプトが実行されない場合は、下の「Packed」というリンクの内容に javascript: を付けたものに置き換えて下さい。
*/
if (typeof(Hatena) == "object") (function () {
var i, e, s = Hatena.Star, t = Ten.JSONP;
// スターが多すぎるページ向けの強制リセット、乱暴。
// if (t.Callbacks.length)
t.Callbacks = [];
if (s && (e = s.EntryLoader.entries)) for (i = 0; i < e.length; i++) {
e[i].bmlR = function(r) {
if (r = r.entries[0]) {
var i, e, t = 0, n = {}, c = r.colored_stars, s = r.stars;
e = s ? s : [];
if (c) for (i = 0; i < c.length; i++) e = e.concat(c[i].stars);
for (i = 0; i < e.length; i++) if (!n[e[i].name] && ++t) n[e[i].name] = 1;
// alert(this.uri + " : " + t);
this.star_container.appendChild(document.createTextNode(t))
}
};
new t(s.BaseURL + "entry.json?uri=" + encodeURIComponent(e[i].uri), e[i], "bmlR")
}
})()
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。