選択中のテキストにはてなスターを付けるブックマークレット

引用スターつける時 Opera だと文字を反転させてからボタンを押すまでの間 慎重な操作が要求されるので、右クリックメニュー(Hotclick Popup Menu)に「スターをつける」がほしい。

http://twitter.com/ashizuka/statuses/1097512342

こんな感じかな。

javascript:(function(d){function findStar(node){return node.getElementsByClassName('hatena-star-add-button');}function giveStar(img){var e=d.createEvent('MouseEvents');e.initMouseEvent('click',true,true,window,1,10,50,10,50,0,0,0,0,1,img);img.dispatchEvent(e)};var a=getSelection();var s=findStar(d);if(s.length==0){return;}else if(s.length==1||a==''){giveStar(s[0]);}else{var b=a.getRangeAt(0).startContainer;var l=0;while(l==0){b=b.parentNode;s=findStar(b);l=s.length;}giveStar(s[0]);}})(document)

ブックマークレットとしては試したけど、右クリックメニューとしては試してない。

右クリックメニューなら

Go to page, "ブックマークレット、またはニックネーム"

というのを [Hotclick Popup Menu] などに追加。

はてなダイアリーとかはてなブックマークではちゃんと選択テキストと共にスターが付いた。

Opera でしか試してないけど、Firefox でも動くような気がする。

一応選択テキストの親ノードを巡って、一番最初に発見したスターを押してるので、誤爆は少ないと思う。

選択テキストが無い場合は、ドキュメント中で最初に登場するはてなスターに星を付けることにしてある。

改善要望があれば受け付けます。


↑付けてみたけど、はてなスターって200文字までしか引用できないんだね。