1

選択したテキストから周囲の DOM ノードを取得する必要があります。Firefox アドオン SDK でそれを行うにはどうすればよいですか? または、拡張機能で使用できる他の可能性はありますか?

例 (選択は大文字) <b class='foo'>here is SELected text</b>

目的は、クラス名を取得することです。

4

2 に答える 2

1

コンテンツ スクリプトはwindow.getSelection()オブジェクトにアクセスできます。理論的には、選択範囲は複数の異なる範囲から構成されます。ただし、複数範囲の選択を見たことがなく、おそらく最初の範囲のみが関連していると想定したいでしょう。範囲には、選択したすべてのテキスト部分を含む要素を取得できるcommonAncestorContainerプロパティがあります。つまり、コンテンツ スクリプトで次のようなことを行う必要があります。

var selection = window.getSelection();
if (selection.rangeCount >= 1)
{
  var range = selection.getRangeAt(0);
  alert(range.commonAncestorContainer.className);
}
于 2012-09-21T06:55:36.327 に答える
0

選択には、必ずしも親ノードが 1 つあるとは限りません。選択範囲のエンドポイントは、範囲内に任意の数のノードを含めて異なるノードにすることができ、選択範囲は複数の範囲で構成できます。selectionオブジェクトは実際には非常に複雑です。

于 2012-09-19T09:48:52.023 に答える