読者です 読者をやめる 読者になる 読者になる

zuzuの開発日記

iMona@zuzu等の開発者であるzuzuの趣味や業務で学んだ事などを書き連ねるブログ

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

UserScript

というわけで、選択範囲のリンクの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セレクタを指定できたりとまあもの凄いメソッドとなっています!
とまあそんなわけで今度から配布するユーザースクリプトでは積極的にこれを使っていこうと思います。
それでは。

広告を非表示にする