javascript - DOM:判断anchorNode或focusNode是否在左侧

标签 javascript dom

这个方法...

window.getSelection().anchorNode

...告诉我们文本选择从哪里开始。

这个方法...

window.getSelection().focusNode

...告诉我们文本选择结束的位置。

由于文本可以选择从左到右或从右到左拖动,这并不意味着 anchorNode 位于 focusNode 的左侧。

什么 DOM/JavaScript 方法可用于确定哪个引用节点位于文本选择的左侧?

澄清:这是为了修复 startContainer() 方法 (window.getSelection().getRangeAt(0).startContainer) 的错误,因此这是一个无效建议。

最佳答案

您通常会使用 Node.compareDocumentPosition()anchorNodefocusNode 上,“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/

相关文章:

javascript - 掩码货币不适用于动态添加的输入

javascript - 如何使 DIV 振动或嗡嗡声? (类似于 iOS 移动/删除应用程序功能)

javascript - 保存状态单选按钮javascript-html

javascript - 如何从 Javascript 中的元素中删除点击事件?

javascript - 如何用B替换元素A并在变量中包含B对象?

javascript - <strong>、<cite>、<article> 等的 HTMLElement 类型

javascript - 搜索页面中的链接 (js)

javascript - 如何在 Protractor 中等待后端?

javascript - forEach 循环在 li 标签内的 div 中插入名称

javascript - 我可以将对象的所有键声明为变量吗?