Javascript document.querySelector是如何实现的?
我想这个问题的答案取决于你使用的浏览器,但我想这会让它更有趣 我想知道这个方法实际上是如何实现的。类似地,我对和等其他方法很好奇Javascript document.querySelector是如何实现的?,javascript,algorithm,dom,browser,tree,Javascript,Algorithm,Dom,Browser,Tree,我想这个问题的答案取决于你使用的浏览器,但我想这会让它更有趣 我想知道这个方法实际上是如何实现的。类似地,我对和等其他方法很好奇 它是深度优先搜索、广度优先搜索,还是利用一些辅助数据结构(如全局哈希表)作为注册表?一旦提取HTML文档,它将传递给HTML解析器,该解析器将遍历文档并创建内容树 这个内容树实际上是一个全局哈希表,许多本机函数都使用它 此信息适用于Firefox您要求的所有信息都在您提供的链接中: querySelector:返回文档中与指定选择器组匹配的第一个元素(使用文档节点的深
它是深度优先搜索、广度优先搜索,还是利用一些辅助数据结构(如全局哈希表)作为注册表?一旦提取HTML文档,它将传递给HTML解析器,该解析器将遍历文档并创建内容树 这个内容树实际上是一个全局哈希表,许多本机函数都使用它 此信息适用于Firefox您要求的所有信息都在您提供的链接中: querySelector:返回文档中与指定选择器组匹配的第一个元素(使用文档节点的深度优先预先顺序遍历|按文档标记中的第一个元素,并按子节点的数量顺序遍历顺序节点)
querySelectorAll:返回文档中与指定选择器组匹配的元素列表(使用文档节点的深度优先顺序遍历)。返回的对象是节点列表
getElementById:通过元素的ID返回对元素的引用;ID是一个字符串,可用于标识元素;可以使用HTML中的id属性或脚本来建立它 由于ID应该是唯一的,因此没有顺序问题
GetElementsByCassName:返回具有所有给定类名的所有子元素的类似数组的对象。在document对象上调用时,将搜索整个文档,包括根节点。也可以对任何元素调用GetElementsByCassName();它将只返回具有给定类名的指定根元素的后代元素
querySelectorAll
在这里有详细的文档记录:
返回文档中与指定选择器组匹配的元素列表(使用文档节点的深度优先顺序遍历)。返回的对象是节点列表
另一方面,getElementsByClassName
没有同样的保证
事实上,我在一些较旧的浏览器上遇到了这样的问题——在各种浏览器上以一种破坏性的方式返回内容。不过,这可以追溯到IE6,并可能在HTML5 doctype下得到稳定
如果必须100%确保文档顺序,则始终存在旧的walkTheDom代码
facepalm我想我读过了,因为我自己确信关于规范的文档不会包括关于实现的文档。不知道是删除问题还是保留问题。