Firefoxの仕様上bookmarkletでは実現しづらいと思っていたことをほぼ実現できる拡張機能(Extension)を発見しました。
それがPhilip Mateescu氏が公開されているCopy URL+です。
この拡張機能は「現在表示されているページ(もしくは右クリック時のリンク先)のタイトルや選択範囲を定型フォーマットにしてクリップボードにコピーする」というものです。
メールやメッセンジャーを使っているときに「おもろいページあるから見て~」とするときにわざわざタイトルとURLをコピペするのもだるいですよね。
そこでこの拡張機能が役立つというわけです*1。
たとえば、うちのサイト「ささやかなる実験場の開発室」のトップページ(http://hsj.jp/works/)を開いているとします。
おもむろに右クリックし表示されるメニューの中の「Copy URL+」の下の"Copy URL + Title"を選択すると、
ささやかなる実験場の開発室(HSJ.jp) http://hsj.jp/works/
という風にコピーされるわけです。
- *1: 逆に言えばそういう需要がなければ、この拡張機能は要りません。
*コピーされる標準のフォーマット
デフォルトで「Copy URL+」のメニューの下には三つの選択肢が登録されています。
*Copy URL + Title
先ほど挙げたものです。表示中のページのタイトルとURLのセットがコピーされます。
ささやかなる実験場の開発室(HSJ.jp) http://hsj.jp/works/
*Copy URL + Selection
表示中のページで選択中(マウスのドラッグで反転している状態)のテキストとURLのセットがコピーされます。たとえば、トップページのタイトルのうち「実験場」の部分だけ選択していると以下のような出力になります。
"実験場" http://hsj.jp/works/
なお、この選択肢は表示中のページ内で選択状態になっていないと表示されません。
*Copy URL + Title + Selection
表示中のページのタイトルと現在選択中のテキスト、そしてURLのセットがコピーされます。
ささやかなる実験場の開発室(HSJ.jp) "実験場" http://hsj.jp/works/
これもまた表示中のページ内で選択状態になっていないと表示されません。
*カスタマイズの方法
Copy URL+はユーザが独時のフォーマットを追加できる機能をもっています。
これはFirefoxのユーザプロファイルフォルダにuser.jsに逐一定義を追加していくという形になります。
ユーザプロファイルフォルダやuser.jsについてはこちらを参考にしてください。
これにより、mt-sukeroku-plusで使いやすいフォーマットにすることが可能です。 (さすがにAmazon.co.jpのASINコードを採取するのは困難ですが・・・)
例を挙げながら追加方法を説明しますと、まずメモ帳など任意のテキストエディタでuser.jsを開きます。
そしてそこに次のような定義を行います。
user_pref('copyurlplus.menus.1.label', 'Copy URL + Title + Sel (HTMLハイパーリンク)'); user_pref('copyurlplus.menus.1.copy', '<a href="%URL%" title="%SEL%">%TITLE%>/a>');
こうすると、メニューに「Copy URL + Title + Sel (HTMLハイパーリンク)」と表示され、選択すると、
<a href="http://hsj.jp/works/" title="実験場">ささやかなる実験場の開発室(HSJ.jp)</a>
という風にコピーされるという寸法です。
先ほどの定義を1行目はメニューの表示名の定義、2行目は出力される内容の定義となります。
1行目の内容はほぼ見たとおりですが、user_prefの中の左側の'...'の中身でmenus.1.labelとかmenus.1.copyとかなっています。この1の部分はメニュー項目の番号になりますので、2個以上存在するときには'copyurlplus.menus.2.label'とか'copyurlplus.menus.3.copy'とかする必要があります。
注意したいのはこの数字は常に1からの連番であることが必要になるということです。
1,2,4の順で定義すると「3がない」と判断して、1と2しかメニューに表示されないという寸法になります。
さて肝心要の2行目の出力定義についてですが、基本的に書いてある通りに出力され、%...%で囲まれている部分がアドレスやタイトルなどに置き換わるという仕組みになっています。
- %URL%
- 表示中のページのアドレス
- %TITLE%
- 表示中のページのタイトル
- %SEL%
- 現在選択中のテキスト(未選択時には空になります)
- %RLINK%
- 右クリックで選択したリンクアンカーのリンク先のアドレス
%RLINK%はちょっとややこしいです。 というのは%RLINK%にしたからといって%TITLE%や%URL%、%SEL%は変わらず表示中のページに対する値となるからです。 まぁ、blogなどでvia.~というような紹介をするのには向いているかもしれませんが、なかなか使いどころの難しいモノであります。
*設定例
Copy URL+のカスタマイズ方法を紹介しているページを参考に作例をいくつか。
*PukiWiki風style
user_pref('copyurlplus.menus.1.label', 'Copy URL + Title (PukiWiki)'); user_pref('copyurlplus.menus.1.copy', '[[%TITLE%:%URL%]]');
*はてなダイアリー用リンク
user_pref('copyurlplus.menus.1.label', 'Copy URL + Title (はてなダイアリー)'); user_pref('copyurlplus.menus.1.copy', '[%URL%:title=%TITLE%]');
*ふつうのHTMLなリンク
user_pref('copyurlplus.menus.1.label', 'Copy URL + Title (A href)'); user_pref('copyurlplus.menus.1.copy', '<a href="%URL%">%TITLE%</a>');
*とあるサイトで紹介されている別のサイトへのリンクを紹介するようなリンク(わけわからんな)
user_pref('copyurlplus.menus.1.label', 'via. Link'); user_pref('copyurlplus.menus.1.copy', '<a href="%RURL%">%SEL%</a> (via.<a href="%URL%">%TITLE%</a>');
*とあるサイトを引用する
user_pref('copyurlplus.menus.1.label', 'この部分を引用する'); user_pref('copyurlplus.menus.1.copy', '<blockquote>%SEL%<br><cite href="%URL%">%TITLE%</cite></blockquote>');
*とあるサイトを引用する(はてなダイアリー用)
user_pref('copyurlplus.menus.1.label', 'この部分を引用する(はてなダイアリー)'); user_pref('copyurlplus.menus.1.copy', '>>\n%SEL%\n[[%URL%:title=%TITLE%]]\n<<\n');
他に良い案があったら教えてください。