ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

選択範囲のリンクのURLをコピーするuserChrome.jsスクリプトを作ってみた。

というわけで、選択範囲のリンクのURLをコピーするuserChrome.jsスクリプトを作ってみました。

どんなスクリプト

選択範囲のリンクのURLを以下のフォーマットでクリップボードへとコピーするためのメニューを右クリックメニューに追加します。

http://hogehoge.com/index.html
http://hogehoge.co.jp/hoge/hoge.cgi?q=test

おまけ・選択範囲のリンクの取得方法サンプル

このスクリプトでは選択範囲のリンクを取得する処理を行っています。
それを実装するに当たって調べたところ、最初に見つかったのはDOMによるRange(DOM Range)を利用して探す方法。
そしてもう一つがFirefox3.5から実装されたDOM selectors APIです。
このDOM selectors APIというのはgetElements系のメソッドをさらにパワーアップさせたようなもので、既存のメソッドよりもさらの便利にDOM操作が可能になるものです。
今回のスクリプトではDOM selectors APIの一つquerySelectorAllメソッドを利用して選択範囲のAタグを取得しました。

//selは現在選択中のウィンドウの選択中の範囲のDOMオブジェクトをコピーしたモノ。
var sel = document.commandDispatcher.focusedWindow.getSelection().getRangeAt(0).cloneContents();
//その中のAタグを全てセレクトもとい抽出
sel.querySelectorAll('a')

ちなみにこのquerySelectorAllはCSSセレクタを利用することで抽出を行っていますので、今までのgetElementsByNameやらgetElementByIdやらgetElementsByTagNameの代替をこれら一つでまかなえます。
(ちなみにquerySelectorというメソッドもあります、こちらは最初の一つのエレメントだけを返します)
またCSSセレクタが使えるのでなんと疑似クラスも扱えたり、カンマ区切りで複数CSSセレクタを指定できたりとまあもの凄いメソッドとなっています!
とまあそんなわけで今度から配布するユーザースクリプトでは積極的にこれを使っていこうと思います。
それでは。