我希望能够找出用户当前在浏览器中选择的文本中存在哪些 DOM 元素。
document.getSelection() 将为我们获取当前选定的文本。但是我们如何确定该文本选择中包含哪些 DOM 元素呢?
window.getSelection()
给你一个选择目的。使用selection.rangeCount
and selection.getRangeAt()
得到一个Range代表您想要的选择的对象。
现在您可以获取选择中的第一个和最后一个节点range.startContainer
/startOffset
and range.endContainer
/endOffset
。然后,您可以在树上上下走动以拾取这两个位置之间的所有元素,例如。使用getElementsBetweenTree()
函数来自这个答案.
不幸的是,IE文本范围模型与 W3 和 HTML5 标准完全不同,而且总体来说要差得多。它几乎不会轻易放弃开始和结束位置,而且不会以任何可靠的方式放弃。你得到的只是parentElement
告诉你共同的祖先,从那里你只能猜测范围是基于创建一个新的范围并调用moveToElementText
然后就可以了compareEndPoints
与选择范围。如果您需要知道确切的文本选择,那么您将根据以下内容进行猜测moveStart
/moveEnd
计算范围并进行比较,这一点也不有趣。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)