HatenaBookmark: IDコール先のコメントに飛ぶ
by
vzvu3k6k
2014-03-10 [2014/03/10 18:09:14]
IDコールのリンクをコメントへのページ内リンクに書き換える
@@ -5,16 +5,16 @@
* @license CC0
*/
-var mentions = document.querySelectorAll(".comment a[href^='/']");
-for(var i = 0; i < mentions.length; i++){
- mentions[i].addEventListener("click", function(event){
- var id = event.target.href.split("/")[3];
+document.addEventListener('click', function(event){
+ var target = event.target;
+ if(target.parentNode.classList.contains('comment') && target.getAttribute('href')[0] == '/'){
+ var id = target.href.split("/")[3];
- var visibleBookmark;
- var bookmarks = document.querySelectorAll("#bookmark-user-" + id);
// 同じブックマークコメントが「人気コメント」「新着コメント」「すべてのブックマーク」の各タブに重複して存在する可能性がある。
// 以下では、言及されたユーザーのブックマークコメントのうちでページ上に表示されているものを選択する。
// 「すべてのブックマーク」を開いていない場合には、言及されたユーザーのブックマークコメントが存在していても表示されていないために選択に失敗する可能性がある。
+ var visibleBookmark;
+ var bookmarks = document.querySelectorAll("#bookmark-user-" + id);
for(var j = 0; j < bookmarks.length; j++){
if(bookmarks[j].getBoundingClientRect().height){
visibleBookmark = bookmarks[j];
@@ -27,6 +27,5 @@
location.href = "#" + tmpId;
visibleBookmark.setAttribute("id", originalId);
event.preventDefault();
- });
-}
-
+ }
+});
/*
* @title HatenaBookmark: IDコール先のコメントに飛ぶ
* @description IDコールのリンクをコメントへのページ内リンクに書き換える
* @include http://b.hatena.ne.jp/entry/*
* @license CC0
*/
document.addEventListener('click', function(event){
var target = event.target;
if(target.parentNode.classList.contains('comment') && target.getAttribute('href')[0] == '/'){
var id = target.href.split("/")[3];
// 同じブックマークコメントが「人気コメント」「新着コメント」「すべてのブックマーク」の各タブに重複して存在する可能性がある。
// 以下では、言及されたユーザーのブックマークコメントのうちでページ上に表示されているものを選択する。
// 「すべてのブックマーク」を開いていない場合には、言及されたユーザーのブックマークコメントが存在していても表示されていないために選択に失敗する可能性がある。
var visibleBookmark;
var bookmarks = document.querySelectorAll("#bookmark-user-" + id);
for(var j = 0; j < bookmarks.length; j++){
if(bookmarks[j].getBoundingClientRect().height){
visibleBookmark = bookmarks[j];
break;
}
}
var tmpId = Math.random();
var originalId = visibleBookmark.getAttribute("id");
visibleBookmark.setAttribute("id", tmpId);
location.href = "#" + tmpId;
visibleBookmark.setAttribute("id", originalId);
event.preventDefault();
}
});
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。