在Javascript中,似乎有两种创建Range
对象的方法:
var range = document.createRange()
:在createRange()
对象上调用Document
。 More infovar range = new Range()
:使用Range()
构造函数。 More info样式1的MDN注意:
创建范围后,您需要先设置其边界点,然后才能使用其大多数方法。
样式2的MDN说:
Range()构造函数返回一个新创建的Range对象,其开始和结束是全局Document对象。
但是那不能完全告诉我两者之间的区别。
然而,在这篇文章发表之时,在MDN上的#2风格上有一条注释说:
这是一项实验技术
而且,重要的是,当前看来IE尚不支持样式2的语法来创建Range
对象。
此外,在创建Range
的方式或通过创建Range
对象的这两种方式返回的内容方面,两者之间是否有任何(细微的)区别?
如果我误用了任何术语,请提前道歉,如果有,请更正,因为我对这些概念还很陌生。
谢谢!
基于DOM Standard W3C specification,两者之间没有区别(强调我):
createRange()方法在被调用时必须返回以(this,0)作为开始和结束的新有效范围。
注意:可以改用Range()构造函数。
实际上document.createRange()
和new Range()
都返回了一个startOffset
和endOffset
设置为0的对象:
{
collapsed: true,
commonAncestorContainer: /* object of type document */,
endContainer: /* object of type document */,
endOffset: 0,
startContainer: /* object of type document */,
startOffset: 0
}