这个方法...
window.getSelection().anchorNode
...告诉我们文本选择从哪里开始。
这个方法...
window.getSelection().focusNode
...告诉我们文本选择结束的位置。
由于文本可以选择从左到右或从右到左拖动,这并不意味着 anchorNode
位于 focusNode
的左侧。
什么 DOM/JavaScript 方法可用于确定哪个引用节点位于文本选择的左侧?
澄清:这是为了修复 startContainer()
方法 (window.getSelection().getRangeAt(0).startContainer
) 的错误,因此这是一个无效建议。
最佳答案
您通常会使用 Node.compareDocumentPosition()在 anchorNode
和 focusNode
上,“left”在道德上等同于 DOCUMENT_POSITION_PRECEDING
(当然除非您有 RTL 文本)。我假设您实际上想知道文档中哪个排在第一位,而不是屏幕上的位置。这样的事情会起作用:
let selection = window.getSelection();
let position = selection.anchorNode.compareDocumentPosition(selection.focusNode);
if (position & Node.DOCUMENT_POSITION_FOLLOWING)
alert("Left-to-right selection");
else if (position & Node.DOCUMENT_POSITION_PRECEDING)
alert("Right-to-left selection");
else
alert("Only one node selected");
关于javascript - DOM:判断anchorNode或focusNode是否在左侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710733/