Jakie jest źródło funkcji kwerendy selektora znaków podwójnego dolara w Chrome/Firefox?

Sprawdź Ten jsfiddle i spójrz na konsolę. $$ nie jest zdefiniowana. Teraz otwórz zupełnie nowe okno i wprowadź $$ do konsoli. Definiuje funkcję do uzyskania tablicy (podobnej do jQuery) wszystkich elementów dom, które pasują do selektora:

> $$

bound: function () {
  return document.querySelectorAll.apply(document, arguments)
}

Czy jest to dodawane przez Dev tools? Jest również obecny podczas korzystania z Firebug w Firefoksie. Czy jest on używany wewnętrznie przez same narzędzia?

Author: Paul Irish, 2012-01-24

2 answers

Cóż, Firebug Lite definiuje to jako:

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

(Zobacz źródło .)

Pełna wersja Firebug definiuje to jako

this.$$ = function(selector)
{
    return FBL.getElementsBySelector(baseWindow.document, selector);
};

Jest to w rzeczywistości udokumentowane i tak, jest również używane wewnętrznie.

Więc zakładam, że Google Chrome robi coś podobnego.

 32
Author: ziesemer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-26 10:46:21

Po pierwsze, wszystko w odpowiedzi ziesemera jest poprawne.

To wszystko o historii JavaScript

Istnieje wiele funkcji, które są dostępne w różnych konsolach devtools przeglądarki. Wszystkie metody są znane jako API linii poleceń (off-line) (new link) i wszystkie pochodzą z Firebug. W dzisiejszych czasach mamy po prostu parytet między przeglądarkami, ponieważ Firebug robił rzeczy (głównie) dobrze.

Ale kiedy powstawał Firebug (2006), the JavaScript library that was all the rage was Prototype.js. $ został złapany przez prototyp dla jakiegoś getElementById() syntaktycznego cukru, ponieważ był to z pewnością najszybszy sposób na chwytanie elementów i najczęstsza technika zdobywania elementów w tym czasie. To było takie oszczędzanie czasu, ludzie używali całej biblioteki tylko za $ sugar.

Na początku 2006 roku jQuery zadebiutowało i użyło $() do wyboru dowolnego elementu opartego na selektorze css. Jak mój stary CSS Selector Engine Po raz pierwszy pojawiła się linia czasu, Prototype następnie cztery dni później z własną, ale ponieważ $ została już zabrana do ich biblioteki, po prostu udali się do $$(), która jest teraz znana jako funkcja bling-bling.

Więc Firebug korzystał z API Prototype, ponieważ nadal rządził roostem w 2006 roku. Teraz, w czasach jQuery i post-jQuery aliasing jak window.$ = document.querySelectorAll.bind(document), widzimy to jako dość wstecz. Co ciekawe, kiedy Opera zrewolucjonizowała Dragonfly, ich browser dev narzędzia, wybrali $ jako swój querySelectorAll alias, aby lepiej pasować do dzisiejszych praktyk, co IMO ma nieco więcej sensu.

Oh miałeś na myśli kod źródło..

Zapytałeś o "Źródło" $$ W DevTools i wyjaśniłem historię. UPS! Dlaczego jest on dostępny w konsoli... wszystkie metody Command Line API (off-line) (new link) są dostępne tylko w kontekście konsoli, podobnie jak metody wygody.

copy() jest jednym z moich ulubionych; i cover it i innych w tym konsola JavaScript dla zaawansowanych użytkowników wideo.

 187
Author: Paul Irish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-15 10:47:36