查询的NodeLists中的“order”有多可靠

我想了解这个话题已经有一段时间了。 有问题的方法如下:

  • getElementsByTagName
  • getElementsByClassName
  • getElementsByName
  • querySelectorAll
  • 据我所知,这些DOM方法是唯一能够返回冻结或活动NodeLists 。 对于其中一些方法,订单由W3C规范定义。 例如,http://www.w3.org为querySelectorAll返回的NodeLists写入以下内容

    Document,DocumentFragment和Element接口上的querySelectorAll()方法必须以文档顺序返回包含上下文节点子树内所有匹配元素节点的NodeList。 如果没有匹配的节点,则该方法必须返回一个空的NodeList。

    但是,我没有找到类似的明确规定,我提到的其他方法。 我在这里的问题是:

  • 是否有定义的顺序(最可能是文档顺序)?
  • 这些规格如何实现可靠和跨浏览器?

  • 要绝对清楚:

    <div>this</div>
    <div>is</div>
    <div>a demo</div>
    
    // is this always guaranteed to be "<div>is</div>"
    document.querySelectorAll('div')[1]
    

    是。 他们都是文件顺序/树形结构。

  • getElementsByName (DOM Level-2-HTML)返回一个NodeList
  • querySelectorAll (选择器API)以“文档顺序”返回一个NodeList
  • getElementsByTagName (DOM)返回一个HTMLCollection
  • getElementsByClassName (DOM)返回一个HTMLCollection
  • HTMLCollectionNodeList都被指定具有

    元素按树顺序排序。

    当这些通过指纹访问。

    我认为这些规范(即使链接版本可能比某些实现更新)可以由所有浏览器可靠地实现,主要是因为树形顺序是最合乎逻辑和易于编码的规则。 但是,您可能需要注意,某些浏览器可能会返回由不同元素组成的列表,因为它们的节点匹配不同。 确定元素name时,我会想到一些怪癖。

    链接地址: http://www.djcxy.com/p/65227.html

    上一篇: How reliable is "order" in queried NodeLists

    下一篇: Can a shift using the CL register result in a partial register stall?