Javascript Rangy:获取选定节点的新方法

Javascript Rangy:获取选定节点的新方法,javascript,rangy,Javascript,Rangy,看起来rangy的最新Alpha版本已经弃用了createNodeIterator()方法,取而代之的是更通用的createIterator()。看起来使用它的语法也有点不同 假设用户对文档进行了多次选择,并将CSS类应用于这些选择。我的目标是确保用户不能对已经有一个rangy应用CSS类的文本进行重叠选择 我仍然可以使用createIterator函数来执行此操作吗?是否有一个内置函数可以帮助我解决此问题?我使用了此解决方案: var isHighlighted = false, range

看起来rangy的最新Alpha版本已经弃用了createNodeIterator()方法,取而代之的是更通用的createIterator()。看起来使用它的语法也有点不同

假设用户对文档进行了多次选择,并将CSS类应用于这些选择。我的目标是确保用户不能对已经有一个rangy应用CSS类的文本进行重叠选择


我仍然可以使用createIterator函数来执行此操作吗?是否有一个内置函数可以帮助我解决此问题?

我使用了此解决方案:

var isHighlighted = false,
range = rangy.getSelection().getRangeAt(0);

var it = range.getNodes([3], function(node) {
    return node.parentNode.tagName == 'SPAN' && node.parentNode.className == 'highlight';
});

if (it.length > 0)
    isHighlighted = true;

return isHighlighted;

为什么不使用getNodes()?它返回您想要的节点集合。@taggon很好的调用。我将发布我的解决方案的代码,因为我还没有完全记录所有这些。其中一个让我绊倒的是[3]参数。这只是文本节点类型的枚举: