全サイトはてぶ化
元ねた:
http://d.hatena.ne.jp/kusigahama/20060307#1141708818
hb_addictの自己改修を続けていたら、このたびのリニューアルで動かなくなりました記念
で、探す。
http://worris.sakura.ne.jp/hbcview.html
を発見。
しかし自前で作ってしまっていた。。。こっちはアイコンを出せるようにしたので、気に入っている。
その場でコメント登録はできません。
ではソース。
// ==UserScript== // @name Hatena Bookmark For All Site // @namespace http://d.hatena.ne.jp/sadac/ // @description insert ?B comment for anypage // @include http://* // ==/UserScript== (function() { function displayComment(response) { var json = eval("(" + response.responseText + ")"); if (json.count == 0) return; print(json.count, json.entry_url, json.bookmarks); } function print(count, entry_url, bookmarks) { var block = document.createElement("div"); block.setAttribute("id", "block"); block.setAttribute("style", "background-color: white; clear: both; text-align: left; border-top: 1px solid gray; list-style-type: none; padding: 5px; margin: 0px; list-style-type: circle; list-style-position: inside; list-style-image: none; font-size: 90%; line-height: 150%;"); var ul = document.createElement("ul"); ul.setAttribute('id', 'bookmarkers_comments'); block.appendChild(ul) for each (b in bookmarks) { if (b.comment == "") continue; var li = document.createElement("li"); li.innerHTML = getEntryText(b); ul.insertBefore(li, ul.lastChild); } var users = document.createElement('a'); users.setAttribute("id", "bookmarkers_count"); users.setAttribute("href", entry_url); users.innerHTML = count + " users"; ul.appendChild(users); document.body.appendChild(block); } function getEntryText(bookmark) { return getUserIcon(bookmark.user) + getUser(bookmark.user) + getTagMessage(bookmark.user, bookmark.tags) + getComment(bookmark.comment); } // アイコン画像。 function getUserIcon(user) { return "<a href=\"http://yagi.xrea.jp/h/" + user + "/\"><img src=\"http://www.hatena.ne.jp/users/" + user.substring(0, 2) + "/" + user + "/profile_s.gif\" border=\"0\" /></a> "; } // リンクを追加。 function getUser(user) { return "<a href=\"http://b.hatena.ne.jp/" + user + "/\">" + user + "</a> "; } // タグのリンクを追加。フォントを小さく。 function getTagMessage(user, tags) { if (tags.length == 0) return ""; var tagMessage = ""; for each (t in tags) { tagMessage = tagMessage + "," + "<a href=\"http://b.hatena.ne.jp/" + user + "/" + encodeURI(t) + "/\">" + t + "</a>"; } return "<font size=\"1\" color=\"steelblue\">[" + tagMessage.substring(1, tagMessage.length) + "]</font> "; } // http://またはhttps://で始まるURLを含む文字列を、リンクとして置換。 function getComment(comment) { var matches = comment.match(/https?:\/\/[\w'.\-)(*/%]+/g); for each (m in matches) { comment = comment.replace(m, "<a href=\"" + m + "\">" + m + "</a>"); } return comment; } GM_xmlhttpRequest({ method: "GET", url: "http://b.hatena.ne.jp/entry/json/" + document.URL.replace(/#/,"%23"), onload: displayComment }); })();