はてブをプライベートモードにする人のためのbookmarklet

ブックマークコメントだと100字に収まらないのでダイアリーに記事書きました。

id:pollyanna

お気に入りにいれてくださっていた方を全員(235人)手作業でリストに打ち込むのが面倒で、

http://d.hatena.ne.jp/hanzo22/20090413/p1#c1239673963

↓

b:id:t298ra

米欄のid:pollyannaさんのためにbookmarklet作った。Firefox3で動作確認。javascript:var x=document.getElementsByClassName('username'),n=x.length,a=[];for(i=0;i& lt;n;i++){a.push(x[i].textContent);}alert(a.join('|'));これをhttp://b.hatena.ne.jp/user_id/followerで実行。

はてなブックマーク - t298raのブックマーク / 2009年4月14日

このbookmarkletにはいろいろと不備があるのでこの場で補足。

「Firefox3で動作確認」と書いたのですが、動作確認せずともIEでは動かないことが分かっておりまして…。
あと、ブラウザによっては警告画面の文字をコピペできなかったりするので…。

ブラウザ別に書きました。

Firefox/Opera
javascript:var x=document.getElementsByClassName('username'),n=x.length,a=[];for(i=0;i<n;i++){a.push(x[i].textContent);}alert(a.join('|'));
Safari/Chrome
javascript:(function(){var x=document.getElementsByClassName('username'),n=x.length,a=[];for(i=0;i<n;i++){a.push(x[i].textContent);}document.body.innerHTML=a.join('|');})()
IE/上記が使えない場合(例えばバージョンが古いとか。多分これは全ブラウザに対応のはず)
javascript:(function(){var x=document.getElementsByTagName('a'),n=x.length,a=[];for(i=0;i<n;i++){if(x[i].className.match(/^username$/i)){a.push(x[i].textContent||x[i].innerText);}}document.body.innerHTML=a.join('|');})()

http://b.hatena.ne.jp/USER_ID/followerを開いてアドレスバーに貼り付けて実行すればおk。

注意点

お気に入られが100人以上の場合、ページが複数に分かれています。2ページ目の読み込みのタイミング次第では100番目の人と101番目の人が重複して、その代りに漏れが発生するので注意ください。
http://b.hatena.ne.jp/USER_ID/followerだとプライベートモードの人は捕捉できないので、http://www.hatena.ne.jp/USER_ID/fansから取得した方がいいかもしれません。
その場合は↓。

Firefox/Opera
javascript:var x=document.getElementsByClassName('username'),n=x.length,a=[];for(i=0;i<n;i++){a.push(x[i].textContent);}alert(a.join('|').replace(/id:/ig,''));
Safari/Chrome
javascript:(function(){var x=document.getElementsByClassName('username'),n=x.length,a=[];for(i=0;i<n;i++){a.push(x[i].textContent);}document.body.innerHTML=a.join('|').replace(/id:/ig,'');})()
IE/上記が使えない場合(例えばバージョンが古いとか。多分これは全ブラウザに対応のはず)
javascript:(function(){var x=document.getElementsByTagName('span'),n=x.length,a=[];for(i=0;i<n;i++){if(x[i].className.match(/^username$/i)){a.push(x[i].textContent||x[i].innerText);}}document.body.innerHTML=a.join('|').replace(/id:/ig,'');})()

このBookmarkletが早く用無しになるように、はてなには頑張って対処をお願いします。

追記

こうした方がスッキリしてるかも。

javascript:alert(document.getElementById('follow-user').textContent.replace(/[^\w\-]+/ig,'|'));