FireFoxのアドオンでExtended Copy Menuというものがあります。
このアドオンは、表示要素を範囲選択して右クリックメニューから、
・選択範囲のテキストのみコピー
・選択範囲をHTMLタグごとコピー
ができるというものなのですが、Twitter上で更に、Aタグのみ(追記:brタグも)しか要らない!そのほかのタグは不要!という声があったので、アドオンのお勉強がてら改造してみました。(自分ではたぶん使わないけど、なんか悔しくて作ってみた)
えー、こんなもの、どこかのガジェットニュースサイトの編集の方がコピペ職人業務をする以外には、不要なものかもしれません。。(笑)
もしかすると何百ページもあるHTMLを移設するような方にも重宝されるかもしれませんが。
動作イメージとしては、
あああ<a href=”xxxx” class=”aa”>aaaaaapaaaaa</a>が</p><br><p><p><p><br /><p><p><i></p><a id =”xx” href=”bbb”>bbbbb</a>です。
という範囲があった場合あああ<a href=”xxxx”>aaaaaapaaaaa</a>が<br /><br /><a href=”bbb”>bbbbb</a>です。
という感じにクリップボードにコピーされます。現状、aタグ(href属性のみ)とテキストと<br>タグだけコピるわけです。そのほかは、バッサリいってしまいます。
時間があれば、メニュー追加するところですが、そんな余裕もなく&元々の機能の「選択範囲のテキストのみコピー」が普通のコピーと何が違うのかさっぱりわからなかったので、そっちをつぶして、こんな風に出てきます。
注意点としては、
・install.rdfとかchrome.manifestとか書き換えてないので、恐らくすでにextended copy menuを使ってる場合は、インストールできないはずなので、いったん削除して入れ直してくださいませ。
・同上の理由で、本家でバージョンアップされると本家バージョンに上書きされて、つかえなくなります。(ただし、みたところ、そもそも自動アップデートに対応してなさそうな気も。。)
・おまけで、本家を日本語化されている方がいらっしゃったのでそれ参考に日本語対応しました
・本家で対応している英語以外の言語はバッサリいってしまいました(だって、意味わかんないんだもの)
・タグ閉じ忘れとかあるHTMLソースなどだと恐らくうまくいかないと思われます。。
まぁ、そんな感じでダウンロードはこちらから。(本家1.6fx_mz:FireFox3.5対応版ベース)
<補足>
何をどうしたかというとExtended Copyのインストール先にある、copyMenu.jsをいじって、範囲選択したHTMLをDOM操作で抜き出して(ここまでは本家と同じ)、それを変数に入れて、正規表現で
cleartags = cleartags.replace(/<([\/])?[Aa]([^>]*)>/gi,”[+[-$1a$2-]+]”);
cleartags = cleartags.replace(/<[Bb][Rr][\s]?[\/]?[^>]?>/gi,”[+[-br /-]+]”);
cleartags = cleartags.replace(/<(“[^"]*”|\’[^\']*\’|[^\'">])*>/gi, “”);
cleartags = cleartags.replace(/\[\+\[-/gi,"<");
cleartags = cleartags.replace(/-\]\+\]/gi,”>”);
cleartags = cleartags.replace(/<[aA].*?href=["']([^"']*?)["'].*?>/gi,”<a href=\”$1\”>”);
gClipboardHelper.copyString(cleartags);
という感じに加工しているだけです。そもそも正規表現が超苦手なので、もっといい書き方があるやもしれません。。わかるかた、教えてください。。cleartags = cleartags.replace(/<[Bb][Rr][\s]?[\/]?[^>]?>/gi,”[+[-br /-]+]”);
cleartags = cleartags.replace(/<(“[^"]*”|\’[^\']*\’|[^\'">])*>/gi, “”);
cleartags = cleartags.replace(/\[\+\[-/gi,"<");
cleartags = cleartags.replace(/-\]\+\]/gi,”>”);
cleartags = cleartags.replace(/<[aA].*?href=["']([^"']*?)["'].*?>/gi,”<a href=\”$1\”>”);
gClipboardHelper.copyString(cleartags);
*追記
反響、ご指摘いただければ、改造じゃなくてちゃんと作ろうかしらん。。
コピった領域を更に、<i >”とか<b>とか指定したタグで自動的に囲うオプションあれば、ブログ投稿のときとか便利かなぁって思った。
One Comment
>コピった領域を更に、”とかとか指定したタグで自動的に囲うオプションあれば、ブログ投稿のときとか便利かなぁって思った。
Copy URL+ や Make Link その他類似スクリプトなどありますけど、もっと簡単にオプションで網羅してあるような拡張なら欲しいです。