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

问题描述 投票:2回答:1

在Javascript中,似乎有两种创建Range对象的方法:

  1. var range = document.createRange():在createRange()对象上调用DocumentMore info
  2. var range = new Range():使用Range()构造函数。 More info

样式1的MDN注意:

创建范围后,您需要先设置其边界点,然后才能使用其大多数方法。

样式2的MDN说:

Range()构造函数返回一个新创建的Range对象,其开始和结束是全局Document对象。

但是那不能完全告诉我两者之间的区别。

然而,在这篇文章发表之时,在MDN上的#2风格上有一条注释说:

这是一项实验技术

而且,重要的是,当前看来IE尚不支持样式2的语法来创建Range对象。

此外,在创建Range的方式或通过创建Range对象的这两种方式返回的内容方面,两者之间是否有任何(细微的)区别?

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

谢谢!

javascript dom range
1个回答
0
投票

基于DOM Standard W3C specification,两者之间没有区别(强调我):

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
}
© www.soinside.com 2019 - 2024. All rights reserved.