Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome/Firefox中双美元符号选择器查询功能的来源是什么?_Javascript_Google Chrome_Firebug_Google Chrome Devtools - Fatal编程技术网

Javascript Chrome/Firefox中双美元符号选择器查询功能的来源是什么?

Javascript Chrome/Firefox中双美元符号选择器查询功能的来源是什么?,javascript,google-chrome,firebug,google-chrome-devtools,Javascript,Google Chrome,Firebug,Google Chrome Devtools,检查,并查看控制台$$未定义。现在,打开一个全新的窗口,在控制台中输入$。它定义了一个函数,用于获取与选择器匹配的所有dom元素的(类似于jquery的)数组: $$ 绑定:函数(){ return document.queryselectoral.apply(文档、参数) } 这是由开发工具添加的吗?在Firefox中使用Firebug时,它也会出现。工具本身是否在内部使用它?好的,定义如下: this.$$=function(selector,doc){if(doc||!FBL.Fireb

检查,并查看控制台<代码>$$未定义。现在,打开一个全新的窗口,在控制台中输入
$
。它定义了一个函数,用于获取与选择器匹配的所有dom元素的(类似于jquery的)数组:

$$

绑定:函数(){
return document.queryselectoral.apply(文档、参数)
}
这是由开发工具添加的吗?在Firefox中使用Firebug时,它也会出现。工具本身是否在内部使用它?

好的,定义如下:

this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
()

Firebug的完整版本如下所示:

this.$$ = function(selector)
{
    return FBL.getElementsBySelector(baseWindow.document, selector);
};
这实际上是,是的,它也在内部使用


所以我假设Google Chrome也在做类似的事情。

首先,齐塞默回答中的所有内容都是正确的

这都是关于JavaScript历史的 在各种浏览器的devtools控制台中都有许多可用的功能。这些方法统称为(离线)方法,它们都源自Firebug。现在我们只是在浏览器之间实现了对等,因为Firebug(大部分)做得很好

但在Firebug创建的时候(2006年),流行的JavaScript库是Prototype.js
$
被Prototype抓取用于一些
getElementById()
语法糖,因为这无疑是抓取元素的最快方法,也是当时最常见的元素获取技术。人们用它来节省时间

2006年初,jQuery首次亮相并使用
$()
基于css选择器选择任何元素。正如我以前的演示,Prototype在四天后用自己的进行了后续,但由于
$
已经被带到了他们的库中,他们只是去了
$()
,这就是现在所知的bling bling function

所以Firebug利用了Prototype的API,因为它在2006年仍然占据主导地位。现在,在jQuery和post-jQuery别名(如
window.$=document.queryselectoral.bind(document)
)的时代,我们认为它非常落后。有趣的是,当Opera彻底改变了Dragonfly(他们的浏览器开发工具)时,他们选择了
$
作为
querySelectorAll
别名,以更好地匹配当今的实践,这在IMO看来更有意义

哦,你是说代码源。。 现在,您询问了DevTools中
$
的“源”,我解释了历史记录。哎呀!至于为什么它可以在你的控制台中使用。。。所有(离线)()方法仅在控制台的上下文中可用,就像方便方法一样


copy()
是我的最爱之一;我在本视频中介绍了它和其他内容。

我想可能就是这样。。在我标记正确之前,有人能检查一下chrome的来源吗?@minikomi-谷歌chrome不是开源的,所以除非谷歌的人能插话,否则我们需要求助于chrome。我查看了这方面的来源,但无法立即找到任何类似的参考资料。然而,我猜这可能存在于铬中,但不存在于铬中……这一点很好。我尽可能地使用谷歌代码,但忘了搜索被关闭了。。然而,由于这两个函数返回的函数几乎相同,因此可以安全地假定它是源函数!非常感谢。啊,英语的歧义。。我指的是历史来源,但我很高兴这两个答案都得到了承认。再次感谢!最后几个链接被破坏了。浏览器源代码变化很快,所以深层链接注定会过时。链接内容可以与代码搜索工具一起使用以查找源代码。Chrome开发工具的相关代码如下。链接很可能在Blink和Chromium存储库合并时中断。我认为src/third_party/WebKit会变成src/blink。正如我所说,深入源代码的链接注定会很快过时!这个答案应该得到更多的选票,并在SO的名人堂中占有一席之地。顺便问一下@PaulIrish,年表数据的来源是什么?i、 e:“原型然后在四天后用他们自己的进行跟踪”。听起来这可能是一本畅销书;“Javascript:一次意想不到的旅程”。