在Javascript中,似乎有两种方法可以创建Range
个对象:
var range = document.createRange()
:在createRange()
对象上调用Document
。 More info var range = new Range()
:使用Range()
构造函数。 More info 风格#1的MDN注意:
创建范围后,您需要先设置其边界点,然后才能使用其大部分方法。
风格#2的MDN说:
Range()构造函数返回一个新创建的Range对象,其start和end是全局Document对象。
但这并不能完全告诉我两者之间有什么区别。
然而,在这篇文章的时候,在风格#2的MDN上面有一条说明:
这是一项实验技术
而且,重要的是,目前看来IE还不支持样式#2创建Range
对象的语法。
除此之外,两者之间是否有任何(细微的)差异,无论是Range
如何创建,还是通过这两种创建Range
对象的方式返回的内容?
如果我误用了任何条款,请提前道歉 - 如果我有,请纠正我,因为我对这些概念还不熟悉。
谢谢!
答案 0 :(得分:1)
基于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
}