アプリケーションを使う案
Flashを使う案 - by edvakf in hatenaの続き。
前の日記のコメント欄で議論されているように、アプリケーションを使えばダイアログの類を出さずにクリップボードにコピーできる。これがその実証。
おもしろいのでWindowsの人は使ってみるといいと思います。
やることは、
- html2clip.exeというソフトを保存して、
- Operaに新しいMIMEタイプ"text/cwf"を登録し、(このステップは無くてもいい気がする)
- JavaScriptを使って"data:text/cwf,charset-UTF-8;〜〜"というURLを開くだけ。
この、「〜〜」の部分にタイトルやらURLやらを仕込ませておけば、あとは勝手にhtml2clip.exeが処理してくれてクリップボードの内容が変わっている。
ちなみにhtml2clip.zipには、テキストを選択しただけでクリップボードにコピーしてくれるユーザーJavaScript、autocopy.jsも入っている。
やってみた
これぐらいだったら自分にも出来ると思い、やってみた。
まず、下のシェルスクリプトをclipboard.shとでも名付けて保存し、パーミッションを700あたりに変える。
#!/bin/bash a0=$1 a0=${a0#<URL>} url=${a0%</URL>*} a1=${a0#*</URL>} a1=${a1#*<TITLE>} title=${a1%</TITLE>*} a2=${a1#*</TITLE>} a2=${a2#*<SELECTION>} selection=${a2%</SELECTION>} texttocopy='<blockquote cite="'$url'" title="'$title'">\n<p>'$selection'</p>\n</blockquote><p>[<cite><a href="'$url'">'$title'</a></cite>]</p>' ## Mac specific echo -e $texttocopy | pbcopy
最後の行だけMac OS X専用。Linuxの人はxselあたりを使えばいいと思う。
次に、下のJavaScriptをアドレス欄に入力してエンター。
javascript:(function(){location.href='data:text/clpbrd;charset=UTF-8,'+'<URL>'+location.href+'</URL><TITLE>'+document.title+'</TITLE><SELECTION>'+window.getSelection()+'</SELECTION>';})()
すると、アドレス、タイトル、選択範囲を
<URL>アドレス</URL><TITLE>タイトル</TITLE><SELECTION>選択範囲</SELECTION>
というテキストファイル(text/clpbrd)としてダウンロードしようとする。
初回だけ下のようなダイアログが出るので、開くアプリケーションに先ほど作ったclipboard.shを選択し、チェックボックスをオンにしてOK。次からはこのダイアログは出ない。
結果
clipboard.shを使わずにそのまま保存したテキストファイルを開くと、UTF-8で日本語も問題なく思った通りに保存されている。
しかし、クリップボードにコピーされた内容をペーストしてみると、
<blockquote cite="-psn_0_4346917" title="-psn_0_4346917"> <p>-psn_0_4346917</p> </blockquote><p>[<cite><a href="-psn_0_4346917">-psn_0_4346917</a></cite>]</p>
残念でした。あは。どうなってるんだろう?
ちなみにこれは、http://d.hatena.ne.jp/edvakf/で、タイトルの"by edvakf in hatena"をコピーしたもの。
psnって何?
つーかここまでやるんだったら普通にExecute Programを使えば?という声もあると思うが、なんとMacではExecute Programが使えないらしい。って今知った↓。