document.createRange()和new Range()有什么区别?

4
在Javascript中,似乎有两种创建Range对象的方式:
  1. var range = document.createRange():在Document对象上调用createRange()更多信息
  2. var range = new Range():使用Range()构造函数。更多信息
样式#1的MDN注意事项如下:

一旦创建了一个范围,您需要在可以使用大多数方法之前设置其边界点。

样式#2的MDN说:

Range()构造函数返回一个新创建的范围对象,其起始点和结束点是全局文档对象。

但这并没有告诉我两者之间的区别。
然而,在本帖发布时,样式#2的MDN顶部有一个注释,其中写道:

这是一项实验技术

重要的是,目前看来IE还不支持样式#2的语法来创建Range对象。

除此之外,在创建Range对象方面,这两种方式是否有任何(微妙的)差异,或者返回的内容是否有所不同?

如果我误用了任何术语,请提出更正,因为我对这些概念还很陌生。

谢谢!

1个回答

1
基于DOM标准W3C规范,两者没有任何区别(重点是我的):
创建createRange()方法在调用时必须返回一个新的活动范围,其起始和结束为(this,0)。
注意:也可以使用Range()构造函数。
实际上,document.createRange()new Range()都返回一个对象,其中startOffsetendOffset均设置为0。
{
  collapsed: true,
  commonAncestorContainer: /* object of type document */,
  endContainer: /* object of type document */,
  endOffset: 0,
  startContainer: /* object of type document */,
  startOffset: 0
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接