1

我需要从选定的文本中获取周围的 DOM 节点。如何使用 Firefox 附加 SDK 做到这一点?或者我可以在我的扩展中使用任何其他可能性吗?

eg(选中的是大写) <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

选择不一定有一个父节点。选择范围的端点可以在不同的节点中,范围内包含任意数量的节点,并且一个选择可以由多个范围组成。一个selection对象实际上是相当复杂的。

于 2012-09-19T09:48:52.023 回答