gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:33:38 24 4
gpt4 key购买 nike

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

  • var range = document.createRange() : 调用 createRange()Document目的。 More info
  • var range = new Range() :使用 Range()构造函数。 More info

  • 样式 #1 的 MDN 指出:

    Once a Range is created, you need to set its boundary points before you can make use of most of its methods.



    样式 #2 的 MDN 说:

    The Range() constructor returns a newly created Range object whose start and end is the global Document object.



    但这并不能完全告诉我两者之间的区别是什么。

    然而,在写这篇文章的时候,MDN 上有一条关于样式 #2 的注释说:

    This is an experimental technology



    并且,重要的是,目前 IE 似乎还不支持用于创建 Range 的样式 #2 的语法。目的。

    除此之外,两者在 Range 的方式上是否有任何(微妙的)差异?创建或通过这些创建 Range 的任何一种方式返回的内容目的?

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

    谢谢!

    最佳答案

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

    The createRange() method, when invoked, must return a new live range with (this, 0) as its start an end.

    Note: The Range() constructor can be used instead.


    确实两者都是 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
    }

    关于javascript - document.createRange() 和 new Range() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996162/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com