范围:compareNode() 方法
已弃用:此功能不再推荐。虽然某些浏览器可能仍然支持它,但它可能已从相关的 Web 标准中删除,也可能正在被删除,或者可能只是为了兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅本页面底部的兼容性表,以指导你的决策。请注意,此功能可能随时停止工作。
非标准:此功能是非标准的,并且不在标准化轨道上。不要在面向 Web 的生产站点上使用它:它不会对每个用户都起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会改变。
Range.compareNode()
返回一个常量,指示Node
的位置。
可能的值是
NODE_BEFORE
(0
)-
节点在范围之前开始
NODE_AFTER
(1
)-
节点在范围之后结束
NODE_BEFORE_AND_AFTER
(2
)-
节点在范围之前开始并在范围之后结束
NODE_INSIDE
(3
)-
节点在范围之后开始并在范围之前结束,即节点完全被范围选中。
警告:此方法已从Gecko 1.9中删除,并且在 Firefox 的未来版本中将不存在,Firefox 是唯一实现它的浏览器;你应该尽快切换到Range.compareBoundaryPoints()
。
以下函数可以用作替代
js
function rangeCompareNode(range, node) {
const nodeRange = node.ownerDocument.createRange();
try {
nodeRange.selectNode(node);
} catch (e) {
nodeRange.selectNodeContents(node);
}
const nodeIsBefore =
range.compareBoundaryPoints(Range.START_TO_START, nodeRange) === 1;
const nodeIsAfter =
range.compareBoundaryPoints(Range.END_TO_END, nodeRange) === -1;
if (nodeIsBefore && !nodeIsAfter) return 0;
if (!nodeIsBefore && nodeIsAfter) return 1;
if (nodeIsBefore && nodeIsAfter) return 2;
return 3;
}
语法
js
compareNode(referenceNode)
参数
referenceNode
-
要与
Range
比较的Node
。
返回值
一个常量,指示Node
的位置。
示例
js
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
returnValue = range.compareNode(document.getElementsByTagName("p").item(0));
注释
此方法已过时;你应该使用 W3C DOM Range.compareBoundaryPoints()
方法。
规范
此方法不是标准方法,因此不属于任何规范。
浏览器兼容性
BCD 表格仅在浏览器中加载