Dołącz jQuery do konsoli JavaScript

772

Czy istnieje prosty sposób na włączenie jQuery w konsoli JavaScript JavaScript dla stron, które go nie używają? Na przykład w witrynie chciałbym uzyskać liczbę wierszy w tabeli. Wiem, że z jQuery jest to naprawdę łatwe.

$('element').length;

Strona nie korzysta z jQuery. Czy mogę dodać to z linii poleceń?

mrtsherman
źródło
3
Aby uzyskać bardziej zautomatyzowane podejście, możesz użyć skryptu użytkownika, aby go dołączyć. Poważnie, to byłoby jak 5-liniowy skrypt użytkownika: P
rlemon
9
document.getElementById('tableID').rows.length. Jeśli tabela nie ma identyfikatora, użyj edytora DOM, aby go nadać. Nie potrzebujesz jQuery dla czegoś tak absurdalnie banalnego.
Niet the Dark Absol
Do tego celu służy rozszerzenie chrome - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha
1
dodaj go do znacznika skryptu, albo z cdn, albo lokalnie. CDN jest znacznie prostszy.
Donato,
1
Wierzę, że większość narzędzi deweloperskich głównych przeglądarek domyślnie zawiera jQuery (i kilka innych popularnych bibliotek, takich jak Underscore), ale nie mogę znaleźć dokumentacji na ten temat. Pop otwórz konsolę, zwykle to po prostu działa (tm). ------ Również to podejście już dawno zostało wbudowane w poręczną bookmarklet przez kilka osób. Użyłem tego z powodzeniem: learningjquery.com/2009/04/… .
brichins

Odpowiedzi:

1377

Uruchom to w konsoli JavaScript przeglądarki, wtedy jQuery powinien być dostępny ...

var jq = document.createElement('script');
jq.src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load, then type (or see below for non wait option)
jQuery.noConflict();

UWAGA: jeśli witryna zawiera skrypty, które powodują konflikt z jQuery (inne biblioteki itp.), Nadal możesz mieć problemy.

Aktualizacja:

Tworzenie najlepszych z najlepszych, tworzenie zakładek sprawia, że ​​jest to naprawdę wygodne, zróbmy to, a także trochę opinii:

  1. Kliknij prawym przyciskiem myszy pasek zakładek, a następnie kliknij opcję Dodaj stronę
  2. Nazwij go tak, jak chcesz, np. Wstrzyknij jQuery i użyj następującego wiersza dla adresu URL:

javascript: (function (e, s) {e.src = s; e.onload = function () {jQuery.noConflict (); console.log ('wstrzyknięty jQuery')}; document.head.appendChild (e); }) (document.createElement ('script'), '// code.jquery.com/jquery-latest.min.js')

Poniżej znajduje się sformatowany kod:

javascript: (function(e, s) {
    e.src = s;
    e.onload = function() {
        jQuery.noConflict();
        console.log('jQuery injected');
    };
    document.head.appendChild(e);
})(document.createElement('script'), '//code.jquery.com/jquery-latest.min.js')

Tutaj używany jest oficjalny adres URL jQuery CDN, możesz użyć własnej wersji CDN /.

jondavidjohn
źródło
180
Ten fragment nie działał dla mnie. Nie miałam czasu, aby dowiedzieć się, dlaczego. Po prostu skopiowałem zawartość pliku code.jquery.com/jquery-latest.min.js i wkleiłem do konsoli. Działa idealnie.
Ruslanas Balčiūnas
9
Teraz potrzebuję tylko klawisza skrótu konsoli Chrome do tego ^^. UTRZYMUJAM ten fragment kodu i surfowałem z powrotem tutaj, aby go zdobyć.
Cris Stringfellow
6
@CrisStringfellow - AKAIK w pracach jest dostępna funkcja fragmentów kodu dla programistów, sprawdź ją chrome:flagsi sprawdź, czy tam jest, musisz ją włączyć.
ocodo
2
@ Slomojo Cieszę się poczuciem humoru. Mam nadzieję, że mroczni władcy nasłuchują, aby mogli popchnąć kanał DIY typu b-tree. Szczególnie podoba mi się to, jak bardzo użyteczne są wszystkie eksperymenty. Myślę, że posortowali według wartości skrótu.
Cris Stringfellow
2
Miałem problem z tą wysyłką, ale ta tutaj stackoverflow.com/a/8225200/497208 działała dla mnie
Jakub M.
227

Uruchom to w konsoli

var script = document.createElement('script');script.src = "https://code.jquery.com/jquery-3.4.1.min.js";document.getElementsByTagName('head')[0].appendChild(script);

Tworzy nowy tag skryptu, wypełnia go jQuery i dołącza do nagłówka.

geneza
źródło
To działało idealnie, dzięki! (Dla przypomnienia otrzymywałem komunikat „Nieprawidłowy typ błędu: $ nie jest funkcją”, a po uruchomieniu tego byłem w stanie normalnie używać i łączyć funkcje $ -selector.)
Ayelis
5
Jeśli pojawi się komunikat bezpieczeństwa (na przykład na Facebooku), po prostu skopiuj / wklej zawartość jquery.js w konsoli javascript.
Thomas Decaux,
1
Działa idealnie @genesis! 2017, przeglądarka MS Edge.
Eric Hepperle - CodeSlayer2010
Działa to doskonale i ratuje życie! Znacznie prostsze i bardziej bezpośrednie niż inne sugestie.
Erica Summers,
85

Skopiuj wszystko z:
https://code.jquery.com/jquery-3.4.1.min.js

I wklej go do konsoli. Działa świetnie.

Ruslanas Balčiūnas
źródło
12
Działa jak marzenie! I nie dodaje skryptu do DOM, co czasem jest niemożliwe z powodu „Dyrektywy o polityce bezpieczeństwa treści”. Próbowałem zaakceptować odpowiedź, która spowodowała: Odmowa załadowania skryptu „ ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ”, ponieważ narusza następującą dyrektywę dotyczącą bezpieczeństwa treści: „script-src .. ..
Kangur
1
Najpierw sprawdź, czy istnieje zmienna $. Jeśli nie jest to jQuery, prawdopodobnie powinieneś puścić jQuery na $ var. Po wywołaniu powyższego skryptu wpisz: $ .noConflict ()
Kangur
Próbowałem użyć różnych 3-liniowych odpowiedzi. Żadna z nich nie pozwoliłaby mi użyć jQuerylub $. Tylko to rozwiązanie działało. A ponieważ teraz nie używam konsoli dziennika zbyt często - to zawsze jest w mojej historii poleceń, więc po pierwszym skopiowaniu treści - teraz wystarczy nacisnąć strzałkę w górę, a następnie wejść. Bardzo fajnie - dziękuję
Gene Bo
płynna odpowiedź.! szukał twojego najlepszego komentarza jako odpowiedzi! świetny.
Irf
Web 3.0 wygląda jak zawsze pięknie.
undercat oklaskuje Monikę
63

Skorzystaj z broszury jQueryify:

http://marklets.com/jQuerify.aspx

Zamiast kopiować wklejając kod w innych odpowiedziach, spowoduje to, że będzie to zakładka, którą można kliknąć.

meder omuraliev
źródło
4
mogę również skopiować inne odpowiedzi do bookmarkletu ..... po prostu koduj URL i dodaj javascript:przed nim.
d -_- b
Co jest z wywołaniem jQuery, które modyfikuje element td? To wydaje się trochę losowe i / lub niebezpieczne. „td.editselectoption [wartość = BN]” ...
Kimball Robinson,
Facebook mówi:Content Security Policy: The page’s settings blocked the loading of a resource at https://code.jquery.com/jquery-latest.min.js (“script-src”).
Rishabh Agrahari,
30

Dodając do odpowiedzi @ jondavidjohn, możemy również ustawić ją jako zakładkę z URL jako kod javascript.

Nazwa: uwzględnij Jquery

URL:

javascript:var jq = document.createElement('script');jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";document.getElementsByTagName('head')[0].appendChild(jq); setTimeout(function() {jQuery.noConflict(); console.log('jQuery loaded'); }, 1000);void(0);

a następnie dodaj go do paska narzędzi przeglądarki Chrome lub Firefox, aby zamiast wklejać skrypt wielokrotnie, możemy po prostu kliknąć bookmarklet.

Zrzut ekranu zakładki

manish_s
źródło
2
2 ulepszenia: 1) ładowanie skryptu zajmuje dużo czasu, więc if (jQuery) ... prawie zawsze zawiedzie. Proponuję dodać setTimeout, aby opóźnić ładowanie; 2) nie używaj jquery-latest, to nie jest tak naprawdę najnowszy i jego użycie jest przestarzałe (spójrz na tego blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone
jQuery.noConflict();Sprawiły, że wydają się nie działać na losowym miejscu ja testowałem to na. Okazało się, że mieli już jQuery, ale $z jakiegoś powodu ich jQuery nie ma skrótu. Zrzut ekranu: prntscr.com/bdcpdh .
Rani Kheir
22

Jestem buntownikiem.

Rozwiązanie: nie używaj jQuery. jQuery to biblioteka służąca do wyodrębnienia niespójności DOM w przeglądarkach. Ponieważ jesteś we własnej konsoli, nie potrzebujesz tego rodzaju abstrakcji.

Na przykład:

$$('element').length

( $$jest aliasem document.querySelectorAllw konsoli).

Na inny przykład: jestem pewien, że mogę coś znaleźć. Zwłaszcza jeśli korzystasz z nowoczesnej przeglądarki (Chrome, FF, Safari, Opera).

Poza tym wiedza o tym, jak działa DOM, nikomu nie zaszkodzi, tylko zwiększy twój poziom jQuery (tak, więcej informacji o javascript poprawi ci umiejętności jQuery).

Florian Margaine
źródło
4
Dzięki za pomysł Florian. Zgadzam się, że każdy, kto korzysta z jQuery, powinien również znać javascript. Ładowanie jQuery to duża oszczędność czasu, nie tylko dlatego, że abstrahuje od niespójności DOM. Jego silnik wyboru sizzlejest znacznie potężniejszy niż jakiekolwiek natywne wywołanie javascript. Zapytanie o coś takiego $('div.className').children().hasClass('active').filter( function(index) { ... });byłoby koszmarem w zwykłym js.
mrtsherman
7
Czy masz na myśli document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine,
6
@FlorianMargaine, [].slice.call( document.querySelectorAll('div.className .active') ).filter...ale tak, chodzi o to: jeśli masz nowoczesną przeglądarkę, dom jest bezbolesny nawet bez jQuery. :)
Esailija,
5
Nie jesteś buntownikiem, wydaje się, że zamiast tego lubisz marnować czas na pisanie więcej :)
Anderson Fortaleza
1
@DavidWest :1nie jest pseudo selektorem. Może chcesz :first-child?
Florian Margaine
12

Właśnie utworzyłem bookmarklet jQuery 3.2.1 z obsługą błędów (ładuj tylko, jeśli nie jest już załadowany, wykryj wersję, jeśli jest już załadowany, komunikat o błędzie, jeśli błąd podczas ładowania) Testowane w Chrome 27. Nie ma powodu, aby używać „starej” wersji jQuery 1.9.1 w przeglądarce Chrome, ponieważ jQuery 2.0 jest kompatybilny z API z 1.9 .

Po prostu uruchom następujące polecenie w konsoli programisty Chrome lub przeciągnij i upuść na pasku zakładek :

javascript:((function(){if(typeof(jQuery)=="undefined"){window.jQuery="loading";var a=document.createElement("script");a.type="text/javascript";a.src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js";a.onload=function(){console.log("jQuery "+jQuery.fn.jquery+" loaded successfully.")};a.onerror=function(){delete jQuery;alert("Error while loading jQuery!")};document.getElementsByTagName("head")[0].appendChild(a)}else{if(typeof(jQuery)=="function"){alert("jQuery ("+jQuery.fn.jquery+") is already loaded!")}else{alert("jQuery is already loading...")}}})())

Czytelny kod źródłowy jest dostępny tutaj

fnkr
źródło
Działa to dobrze, chociaż adres URL pliku .js musi zostać zaktualizowany.
dsomnus
Być może witryna, w której próbujesz tego użyć, wysyła niestandardowy nagłówek Content-Security-Policy.
fnkr
8

Top odpowiedź, przez jondavidjohn jest dobre, ale chciałbym, aby dostosować go do rozwiązania kilka punktów:

  • Różne przeglądarki wyświetlają ostrzeżenie podczas ładowania skryptu z httpna stronę w https.
  • Po prostu zmieniam jquery.comprotokół, aby httpswyświetlał ostrzeżenie, jeśli spróbujesz go bezpośrednio z paska adresu przeglądarki:This is probably not the site you are looking for!
  • Lubię używać CDN Google, kiedy używam konsoli do eksperymentowania z witrynami Google, takimi jak Gmail.

Moim jedynym problemem jest to, że muszę podać numer wersji, w której naprawdę zawsze chcę mieć najnowszą wersję.

var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();
hippietrail
źródło
1
Odmówiono załadowania skryptu „ ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ”, ponieważ narusza następującą dyrektywę dotyczącą zasad bezpieczeństwa treści: „script-src 'self” „unsafe-inline” „unsafe-eval” ”. Zauważ, że „skrypt-src-elem” nie został jawnie ustawiony, więc „skrypt-src” jest używany jako rezerwowy.
Dimmduh
7

Według tej odpowiedzi :

fetch('https://code.jquery.com/jquery-latest.min.js').then(r => r.text()).then(r => eval(r))

Z jakiegoś powodu muszę go wykonać dwukrotnie, aby uzyskać nowe „$” (co mam również do czynienia z innymi metodami), ale działa.

Jest to odpowiednik, jeśli Twoja przeglądarka nie jest tak nowoczesna:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
vt5491
źródło
Być może dlatego, że działa asynchronicznie, tak działają wywołania zwrotne i obietnice JS. Tak aby mieć pewność, że skrypt jest wykonywany, trzeba uruchomić własny kod wewnątrz „a następnie” zwrotnego obietnicy zwrcania: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Mam nadzieję, że to ci pomoże.
Maciej Bukowski,
To nie działało dla mnie. Ale posiadanie dwóch evals w ostatnim bloku zrobił pracę fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Jest to wyraźna poprawa w stosunku do konieczności robienia tego dwukrotnie.
vt5491,
niesamowite w przypadkach, gdy masz problem z polityką treści
Alexey Sh.
5

Wykonanie tego jest dość łatwe, jak wyjaśniają inne odpowiedzi. Ale jest też wtyczka jQuerify .

Ken Redler
źródło
+1 - Dzięki Ken. Słowo jQuerify przypomniało mi, że stworzyłem bookmarklet, aby to zrobić. Dodałem własną odpowiedź z kodem, którego użyłem. Wiedziałem, że zrobiłem to wcześniej =).
mrtsherman,
2
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
adamb
@adamb, niestety, wraz z tendencją starych linków do zepsucia, mój czas i motywacja do poprawy niektórych z tych bardzo starych odpowiedzi ulegały z czasem rozproszeniu. Jednak dzięki projektowi SO z przyjemnością poprawisz odpowiedź - wkład w walkę z entropią, który jest zawsze mile widziany.
Ken Redler,
5

FWIW, Firebug osadza includespecjalne polecenie, a jquery jest domyślnie aliasowane: https://getfirebug.com/wiki/index.php/Include

W twoim przypadku wystarczy wpisać:

include("jquery");

Florent

fflorent
źródło
Właściwie to include("http://code.jquery.com/jquery-latest.min.js", "jquery")po raz pierwszy. Jeśli tylko include("jquery");dostaniesz błąd Alias 'jquery' not found.. include("jquery");służy do ponownego użycia tej samej biblioteki w innej karcie / domenie.
machineaddict
1
Nie od wersji Firebug 1.11.4, która jest domyślnie (chyba że wcześniej zdefiniowałeś aliasy): code.google.com/p/fbug/issues/detail?id=6133 (Uwaga: Jestem autorem tej funkcji: ))
fflorent
Mam Firebug 1.12.8 i jeśli przejdę do, powiedzmy Google, podczas pracy include("jquery")w konsoli pojawia się ten błąd.
machineaddict
Hmm, powinieneś użyć Firebug 2.0.8, który jest najnowszą oficjalną wersją. Również powód, dla którego include („jquery”) nie działa dla ciebie, jest zdecydowanie dlatego, że utworzyłeś alias przed wersją 1.11.4, jak wspomniałem. Wystarczy usunąć includeAliases.jsonplik (zawierający include()aliasy) z profilu Firefoxa, który powinien zadziałać.
fflorent
3

ta odpowiedź oparta na odpowiedzi @genesis, najpierw wypróbowałem wersję zakładki @jondavidjohn i nie działa, więc zmieniam ją na tę (dodaj ją do swojej zakładki):

javascript:(function(){var s = document.createElement('script');s.src = "//code.jquery.com/jquery-2.2.4.min.js";document.getElementsByTagName('head')[0].appendChild(s);console.log('jquery loaded')}());

słowa ostrzeżenia, nie jest testowany w chrome, ale działa w Firefoxie i nie jest testowany w środowisku konfliktu.

whale_steward
źródło
2

Jednym z najkrótszych sposobów byłoby po prostu skopiowanie wklejenia poniższego kodu do konsoli.

var jquery = document.createElement('script'); 
jquery.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.head.appendChild(jquery);
RegarBoy
źródło
1

Jeśli chcesz to zrobić dla skryptu użytkownika, napisałem to: http://userscripts.org/scripts/show/123588

Pozwoli ci to dołączyć jQuery, interfejs użytkownika i dowolne wtyczki, które chcesz. Używam go w witrynie, która ma 1.5.1 i nie ma interfejsu użytkownika; ten skrypt daje mi zamiast tego 1.7.1, plus interfejs użytkownika i nie ma konfliktów w Chrome ani FF. Sam nie testowałem Opery, ale inni powiedzieli mi, że to też tam działało, więc powinno to być całkiem dobre kompletne rozwiązanie dla użytkowników przeglądarek, jeśli po to musisz to zrobić.

BrianFreud
źródło
1

Oto alternatywny kod:

javascript:(function() {var url = '//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; var n=document.createElement('script');n.setAttribute('language','JavaScript');n.setAttribute('src',url+'?rand='+new Date().getTime());document.body.appendChild(n);})();

które można wkleić bezpośrednio w konsoli lub utworzyć nową stronę zakładek (w Chrome kliknij prawym przyciskiem myszy pasek zakładek , dodaj stronę ... ) i wklej ten kod jako adres URL.

Aby sprawdzić, czy to zadziałało, patrz poniżej.

Przed:

$()
Uncaught TypeError: $ is not a function(…)

Po:

$()
[]
kenorb
źródło
1

Jeśli chcesz często używać jQuery z konsoli, możesz łatwo napisać skrypt użytkownika. Najpierw zainstaluj Tampermonkey, jeśli korzystasz z Chrome, a Greasemonkey, jeśli masz Firefox. Napisz prosty skrypt użytkownika za pomocą funkcji use takiej jak ta:

var scripts = [];

function use(libname) {
    var src;
    if (scripts.indexOf(libname) == -1) {
        switch (libname.toLowerCase()) {
            case "jquery":
                src = "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js";
                break;
            case "angularjs":
                src = "//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js";
                break;
        }
    } else {
        console.log("Library already in use.");
        return;
    }
    if (src) {
        scripts.append(libname);
        var script = document.createElement("script");
        script.src = src;
        document.body.appendChild(scr);
    } else {
        console.log("Invalid Library.");
        return;
    }
}
Asif Mallik
źródło
1

Rozwiązanie pod klucz:

Wprowadź swój kod do yourCode_herefunkcji. I zapobiegaj HTMLowi bez znacznika HEAD.

(function(head) {
  var jq = document.createElement('script');
  jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js";
  ((head && head[0]) || document.firstChild).appendChild(jq);
})(document.getElementsByTagName('head'));

function jQueryReady() {
  if (window.jQuery) {
    jQuery.noConflict();
    yourCode_here(jQuery);
  } else {
    setTimeout(jQueryReady, 100);
  }
}

jQueryReady();

function yourCode_here($) {
  console.log("OK");
  $("body").html("<h1>Hello world !</h1>");
}

A-312
źródło
1

Nowoczesne przeglądarki (testowane na Chrome, Firefox, Safari) implementują niektóre funkcje pomocnicze za pomocą znaku dolara, $które są bardzo podobne do jQuery (jeśli strona nie definiuje czegoś za pomocą window.$).

Te narzędzia są bardzo przydatne do wybierania elementów w DOM i ich modyfikowania.

Dokumenty: Chrome , Firefox

Zanon
źródło