はてな文字数カウンター


ちょうど作りたいと思っていたところだったので、以下の御二方のエントリーに非常に刺激をうけました。


シナトラ千代子 - はてなブックマーク用コメント文字数カウンター
http://d.hatena.ne.jp/wetfootdog/20050512/p1

bookmarklet

nothing but trouble - はてなブックマーク用コメント文字数カウンター
http://d.hatena.ne.jp/send/20050513/p1


ということで、sendさんのbookmarkletを改造させていただきました。


下記のbookmarkletを作動させると、入力欄の横に現在何文字入力中なのかを(ほぼ)リアルタイムで表示してくれるようになります。


また、はてなブックマークだけじゃなく、はてなアイデアにも対応しました。

はてなブックマーク追加時のコメント欄(全角50文字まで)、はてなアイデアの要望欄(全角85文字まで)および各要望のコメント欄(全角3250文字まで)がある各ページで動作します。


# はてなアイデアでは「全角X文字まで」という表記なので、カウントを全角にあわせてみました。なので、アルファベット(半角)が混じっている場合、4.5/504.33333333/50などといったカウントになります。。。

# アイデアにも対応したせいで、bookmarkletが長くなってしまい、IEでは動かなくなってしまいました。現在、Firefox(1.0.31.0.4)でだけ動作確認しています。

# ma.laさんちの手法を使って外部jsファイル化しようと思ったんですが、とりあえず公開。
http://la.ma.la/blog/diary_200504140039.htm *1


はてな文字数カウンター ←ブックマーク用ダミーリンク

javascript:u=location.href;s=u.charAt(7);l=(s=='b')?50:(u.indexOf('\/idea\/')>0)?50:(s=='i')?85:0;if(l){re=new RegExp("[^ -~%EF%BD%A1-%EF%BE%9F]","g");d=document;f=d.forms[1];e=(l==85)?f.content:f.comment;c=d.getElementById('count');if(!c){p=d.createElement('span');p.innerHTML='<span id=count>0</span>/'+l;if(e.nextSibling){e.parentNode.insertBefore(p,e.nextSibling);}else{e.parentNode.appendChild(p);}c=p.firstChild;}function getN(e){if(!e.value){return 0;}else{return (e.value.replace(re,"###").length)/3;}}function setN(c,n){c.innerHTML=n;}setInterval('setN(c,getN(e))',1000);}undefined;


他にも数えるべきページってあるでしょうか。

はてなアイデアで、はてなへの要望が出されているような気もしますが。。。

正式に実装されるまでのツナギということで。


(追記)FirefoxだとGreasemonkeyにすればもっと楽ですね。今こんなのをエントリーしてる場合か!ってのはありますが。


Firefoxを1.0.4にアップしました。このbookmarklet、動作しました。