⇒バージョンアップ版できました。
フローティングウィンドウ化した Social Bookmark Viewer Ver3.0
私は Sleipnir 使いなのですが、最近はてなブックマークを使い始めたので、以下の SeaHorse スクリプトを導入。はてなブックマークの情報がページの下に出てくる。
kaz::hatena - Sleipnir+SeaHorseで全サイトはてブ化v3
ところがこちらのコメント欄で報告があるとおり、特定のページで「サーバーが見つかりません」と言うエラーが出るようです。というか実際にガンガン出てきましたので修正版を作りました。とりあえず、数日いじって「サーバーが見つかりません」エラーが全く出なくなったので、公開しておきます。
どうもJapanizeでも同じ現象が発生しているようでしたので、修正方法をさくっといただきました。もう数年前にスキルが消えうせたのでほぼコピーです。
// ==UserScript==
// @name Hatena Bookmark Comments Viewer for Sleipnir+SeaHorse Plus
// @author sasuket
// @namespace http://sasuket.blog7.fc2.com/
// @description Show Hatena Bookmark's comments at the bottom of your browser.
// @include http://*
// ==/UserScript==
function hbcv_callbackfunc(obj)
{
var max_comment_num = 30;
var show_tag_only = false;
function getDate(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
if (m < 10) m = "0" + m;
if (d < 10) d = "0" + d;
return y + "/" + m + "/" + d;
}
if(obj && obj.count>0)
{
var bm=obj.bookmarks;
var hbm_cmt = document.getElementById('hbm_cmt');
hbm_cmt.innerHTML = "<a href=\"http://b.hatena.ne.jp/entry/" + escape(document.location.href) + "\" style=\"color: red; font-weight: bold; text-decoration: underline; background-color: #ffcccc\">" + obj.count + "user" + (obj.count>1 ? "s" : "") + "</a> | <a href=\"javascript:void(0);\" style=\"color: blue; text-decoration: underline;\" onClick=\"javascript:document.getElementById('hbm_cmt').style.display='none',void(0);\">CLOSE</a><br/><br/>";
for(i=0;i<bm.length;i++)
{
if(bm[i].comment || (show_tag_only && bm[i].tags.length>0))
{
var name = bm[i].user;
var date = getDate(new Date(bm[i].timestamp));
hbm_cmt.innerHTML += "<span style=\"color: black;\">" + date + "</span> <img src=\"http://www.hatena.ne.jp/users/" + name.substring(0,2) + "/" + name + "/profile_s.gif\"> <span style=\"color: blue;\">" + name + "</span> <span class=\"tags\" style=\"color: gray;\">" + bm[i].tags.join(',') + "</span> <span style=\"color: black;\">" + bm[i].comment + '</span><br/>';
}
if (i==max_comment_num) { break; }
}
}
}
(
function (c) { //Add
var is_called;
if (document != null && is_called != true && self.location.href==top.location.href)
{
is_called = true;
//ADD Start
if (document.readyState != 'complete') {
if (c < 8000) {
var f = arguments.callee;
c *= 2;
setTimeout(function () { f(c); }, c);
}
return;
}
//ADD End
if (self.location.href==top.location.href)
{
var div = document.createElement('div');
div.id = "hbm_cmt";
var is_done = document.getElementById("hbm_cmt"); //Add
if (is_done != null) { return; } //Add
div.innerHTML = "<a href=\"javascript:void(0);\" style=\"color: blue; text-decoration: underline;\" onClick=\"javascript:document.getElementById('hbm_cmt').style.display='none',void(0);\">CLOSE</a><br/><br/>";
div.style.cssText = "width: 90%; background-color: #f0f0f0; border: solid 1px #cccccc; margin: 5px; padding: 5px; text-align: left;";
document.body.appendChild(div);
var uri = top.location.href;
script = document.createElement('script');
script.src = 'http://b.hatena.ne.jp/entry/json/?callback=hbcv_callbackfunc&url=' + escape(uri);
document.body.appendChild(script);
}
}
})(100); //ADD
JavaScript 触るのなんて数年ぶりですよ。DOMがぼちぼち出てきた頃以来なので内容読むだけなのに戸惑う戸惑う。リファレンスくらい買いなおそうかな…(´・ω・`)
