livedoorクリップで元記事を引用するときに引用符をつけるブックマークレット

最終更新:2009/04/22

私の愛用するソーシャルブックマークサービスlivedoorクリップ。コメントが1000文字までたっぷり書けるのが私にとって最大の魅力であります。
何をそんなにたくさん書くのかというと、(1)要約(検索用キーワードを含めるので長くなる) (2)元記事の引用 (3)意見や感想 などです。いつも全部書いてるわけじゃないですが、100文字軽くオーバーとか当たり前です。

この中で意外とめんどくさいのが(2)の引用。公式のブックマークレットには「選択範囲をコメントにコピーする」ってオプションがあって、クリップ時のコメント欄に元記事で選択状態だったテキストを入れておくこともできるのですが、これだと引用符をつけてくれません。
というわけで自分で改造しました。

追記:添削してもらいました。最新版はこちら

// Firefox、Opera、Safari、GoogleChrome用
javascript:var%20a='';location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&tags='+''+'&notes='+((!!(a=window.getSelection().toString()))?encodeURIComponent('『'+a+'』'):'')+'&jump=ref'

// IE用……!
javascript:var%20a='';location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&tags='+''+'&notes='+((!!(a=document.selection.createRange().text))?encodeURIComponent('『'+a+'』'):'')+'&jump=ref'

こんな感じでいいのかなあ。Windows版のFirefox3、Opera9、Safari4Chrome、IE6で確認。たぶんがんばれば共通にできたんだけど、面倒になりました。
選択中のテキストがない場合は引用符も入力されないようになっています。『』が引用符です。変更すればお好みのものを使えると思います。
ちなみに「非公開じゃなくても恥ずかしくないもん!」仕様*1になってますので、万が一使う場合はご注意あれ。

追記(最新版はここから)

ArcCosineさんが添削してくれました。いつもありがとう!
クロスブラウザ対応版です。

javascript:(function(){var%20a=/*@cc_on!@*/false?document.selection.createRange().text:window.getSelection().toString();location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&tags='+''+'&notes='+((!!a)?encodeURIComponent('『'+a+'』'):'')+'&jump=ref';})();

/*@cc_on 〜 @*/のあたりはIE専用条件付きコンパイル。あと、無名関数を使ってお行儀良くなりました。条件付きコンパイルについては新たに覚えたので、それはまた別エントリで書こうと思います。

クロスブラウザじゃないほうを書き換えるとこうなるかな……

// Firefox、Opera、Safari、GoogleChrome用
javascript:(function(){var%20a=window.getSelection().toString();location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&tags='+''+'&notes='+((!!a)?encodeURIComponent('『'+a+'』'):'')+'&jump=ref';})();

// IE用……!
javascript:(function(){var%20a=document.selection.createRange().text;location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&tags='+''+'&notes='+((!!a)?encodeURIComponent('『'+a+'』'):'')+'&jump=ref';})();

しかしなんで先日の私は変数宣言と代入を分けてたんだろうね?(答え:公式のブックマークレットに引きずられた)

*1:(c)rancorさん 要するに公開設定