読者です 読者をやめる 読者になる 読者になる

はてなブックマークのエントリーページで id コ−ルコメントを明示化する Greasemonkey

greasemonkey はてなブックマーク

id:ekken さんのブログのエントリー、僕が「あったら良いな」と思うはてなブックマークの機能のまとめ にこんなことが書かれていた。

idコールしたコメントは、コールした側からは分かりやすいけど、コールされた側からは分かりにくい。idコールをメール通知設定にしているユーザーはともかくも、そうではないユーザーや当事者以外には分かりにくいので、ブックマークコメント一覧に「コールされたことが分かりやすくなる何か」があると良いなぁ。

うん、確かにこれはあったら便利そう。

と、いうわけで

早速、はてなブックマーク新バージョンで動くグリモンを作ってみた!

// ==UserScript==
// @name           Hatena Bookmark Reply
// @namespace      http://www.ohaco.jp
// @include        http://b.hatena.ne.jp/entry/*
// @version        1.0
// ==/UserScript==

(function() {
  var bookmarked_user = document.getElementById('bookmarked_user');
  var allSpan = bookmarked_user.getElementsByTagName('span');

  for (i = 0; i < allSpan.length; i++ ) {
    if (allSpan[i].className == 'comment') {
      if(allSpan[i].innerHTML.match(/id:[0-9a-zA-Z_\-]+/)) {
        var replyId = allSpan[i].innerHTML.match(/id:[0-9a-zA-Z_\-]+/)[0].substr(3);
        var callId = allSpan[i].parentNode.getElementsByTagName('a')[1].innerHTML;

        if(document.getElementById('bookmark-user-' + replyId)) {
          var replyLi = document.getElementById('bookmark-user-' + replyId);

          if(!document.getElementById( 'hatena_bookmark_reply_' + replyId)) {
            var replyChild = document.createElement('div');
            replyChild.setAttribute('id', 'hatena_bookmark_reply_' + replyId);
            replyChild.innerHTML = '&nbsp;Reply&nbsp;:&nbsp;';
            replyChild.style.display = 'inline';
            replyLi.appendChild(replyChild);
          }

          var replyAnchor = document.createElement('a');
          replyAnchor.setAttribute('href', location.href.split('#')[0] + '#bookmark-user-' + callId);

          var callIcon = document.createElement('img');
          callIcon.setAttribute('src', allSpan[i].parentNode.getElementsByTagName('img')[0].src);
          callIcon.setAttribute('title', callId);

          replyAnchor.appendChild(callIcon);
          document.getElementById( 'hatena_bookmark_reply_' + replyId).appendChild(replyAnchor);
        }
      }
    }
  }
})();

これを使うとこうなります。

Reply の右側にあるアイコンをクリックすると、そのユーザーのブクマコメまで移動します。

インストールはここから

http://userscripts.org/scripts/show/36666

Sleipnir + SeaHorse でも動きました。

ホントは昨日の夜に公開しようと思ってたんだけど、作ってる途中で はてブベータが 503 になって泣きそうになった。あと、使っていて変な所とかがあったら教えてください><

追記

はてブが正式リリースされたので修正しました! URL が変わっただけですが。