Opera Communityではてなスターを使えるようにするユーザーJavaScript
Friday, 21. September 2007, 10:56:45
最近、個人的にはてなスターブームが到来したのでOpera Communityではてなスターを付ける事ができるようにするユーザーJavaScriptを作りました。
とりあえずブログにだけ対応。Firefoxでも使えます。そもそも私以外に使いたいと思う人間が一人も存在しないような気もしますが、そこら辺は気にしない方向で。
my.opera.comドメインで付けられているはてなスターの一覧ははてなスター - Opera Communityから確認できるようです。
// ==UserScript==
// @name my.opera.com - Append Hatena Star
// @author Satoru Watanabe
// @namespace http://my.opera.com/Watanabe/
// @version 1.0.0
// @include http://my.opera.com/*/blog/*
// @include http://my.opera.com/*/archive/*
// ==/UserScript==
(function () {
var w = typeof unsafeWindow != "undefined" ? unsafeWindow : window;
var t = setInterval(function(){
if (!w.Hatena) return;
init();
clearInterval(t);
}, 100);
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('charset', 'utf-8');
script.setAttribute('src', 'http://s.hatena.ne.jp/js/HatenaStar.js');
document.getElementsByTagName('head')[0].appendChild(script);
function init() {
w.Hatena.Star.EntryLoader.loadEntries = function () {
var entries = [];
var posts = w.Ten.DOM.getElementsByTagAndClassName('div', 'post', document.body);
for (var i = 0, len = posts.length; i < len; i++) {
entries.push(new w.Hatena.Star.Entry.MyOpera(posts[i]));
}
return entries;
}
w.Hatena.Star.Entry.MyOpera = new w.Ten.Class({
initialize: function (post) {
var entry = w.Ten.DOM.getElementsByClassName('title', post)[0];
this.title = w.Ten.DOM.scrapeText(entry);
var a = entry.getElementsByTagName('a')[0];
this.uri = a == null ? location.href : a.href;
this.comment_container = w.Hatena.Star.EntryLoader.createCommentContainer();
entry.appendChild(this.comment_container);
this.star_container = w.Hatena.Star.EntryLoader.createStarContainer();
entry.appendChild(this.star_container);
}
});
}
}) ();