選択したテキストから周囲の DOM ノードを取得する必要があります。Firefox アドオン SDK でそれを行うにはどうすればよいですか? または、拡張機能で使用できる他の可能性はありますか?
例 (選択は大文字)
<b class='foo'>here is SELected text</b>
目的は、クラス名を取得することです。
選択したテキストから周囲の DOM ノードを取得する必要があります。Firefox アドオン SDK でそれを行うにはどうすればよいですか? または、拡張機能で使用できる他の可能性はありますか?
例 (選択は大文字)
<b class='foo'>here is SELected text</b>
目的は、クラス名を取得することです。
コンテンツ スクリプトはwindow.getSelection()
オブジェクトにアクセスできます。理論的には、選択範囲は複数の異なる範囲から構成されます。ただし、複数範囲の選択を見たことがなく、おそらく最初の範囲のみが関連していると想定したいでしょう。範囲には、選択したすべてのテキスト部分を含む要素を取得できるcommonAncestorContainer
プロパティがあります。つまり、コンテンツ スクリプトで次のようなことを行う必要があります。
var selection = window.getSelection();
if (selection.rangeCount >= 1)
{
var range = selection.getRangeAt(0);
alert(range.commonAncestorContainer.className);
}
選択には、必ずしも親ノードが 1 つあるとは限りません。選択範囲のエンドポイントは、範囲内に任意の数のノードを含めて異なるノードにすることができ、選択範囲は複数の範囲で構成できます。selection
オブジェクトは実際には非常に複雑です。