アプリケーションを使う案

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が使えないらしい。って今知った↓。