Fügen Sie jQuery in die JavaScript-Konsole ein

772

Gibt es eine einfache Möglichkeit, jQuery in die Chrome JavaScript-Konsole für Websites aufzunehmen, die es nicht verwenden? Zum Beispiel möchte ich auf einer Website die Anzahl der Zeilen in einer Tabelle erhalten. Ich weiß, dass dies mit jQuery wirklich einfach ist.

$('element').length;

Die Site verwendet jQuery nicht. Kann ich es über die Befehlszeile hinzufügen?

mrtsherman
quelle
3
Für einen eher automatisierten Ansatz können Sie ein Benutzer-Skript verwenden, um es einzuschließen. Im Ernst, das wäre wie ein 5-zeiliges
Benutzer-
9
document.getElementById('tableID').rows.length. Wenn die Tabelle keine ID hat, geben Sie sie mit dem DOM-Editor an. Sie brauchen jQuery nicht für etwas so absurd Triviales.
Niet the Dark Absol
Es gibt eine Chrome-Erweiterung, um dies zu tun - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha
1
Fügen Sie es einem Skript-Tag hinzu, entweder von cdn oder lokal. CDN ist viel einfacher.
Donato
1
Ich glaube, dass die meisten Dev Tools der großen Browser jetzt standardmäßig jQuery (und einige andere beliebte Bibliotheken wie Underscore) enthalten, aber keine Dokumentation dazu finden. Öffnen Sie die Konsole, die normalerweise nur funktioniert (tm). ------ Auch dieser Ansatz wurde (jetzt) ​​von mehreren Personen längst in ein handliches Lesezeichen eingebaut. Ich habe dieses erfolgreich verwendet: learningjquery.com/2009/04/… .
Brichins

Antworten:

1377

Führen Sie dies in der JavaScript-Konsole Ihres Browsers aus, dann sollte jQuery verfügbar sein ...

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();

HINWEIS: Wenn die Site Skripte enthält, die mit jQuery in Konflikt stehen (andere Bibliotheken usw.), können immer noch Probleme auftreten.

Aktualisieren:

Wenn Sie das Beste besser machen und ein Lesezeichen erstellen, ist dies sehr praktisch. Lassen Sie es uns tun, und ein kleines Feedback ist auch großartig:

  1. Klicken Sie mit der rechten Maustaste auf die Lesezeichenleiste und klicken Sie auf Seite hinzufügen
  2. Benennen Sie es wie Sie möchten, z. B. Injizieren Sie jQuery, und verwenden Sie die folgende Zeile für die URL:

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

Unten ist der formatierte Code:

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')

Hier wird die offizielle jQuery-CDN-URL verwendet. Sie können auch Ihre eigene CDN / Version verwenden.

jondavidjohn
quelle
180
Dieses Snippet hat bei mir nicht funktioniert. Ich hatte keine Zeit herauszufinden, warum. Kopieren Sie einfach den Inhalt der Datei code.jquery.com/jquery-latest.min.js und fügen Sie ihn in die Konsole ein. Funktioniert perfekt.
Ruslanas Balčiūnas
9
Jetzt brauche ich nur noch einen Chrome Console Hotkey dafür ^^. Ich halte dieses Snippet und surfe zurück hierher, um es zu bekommen.
Cris Stringfellow
6
@CrisStringfellow - AKAIK Es ist eine Entwickler-Snippets-Funktion in Arbeit. Überprüfen Sie Ihre chrome:flagsund sehen Sie, ob sie vorhanden ist. Sie müssen sie einschalten.
ocodo
2
@ Slomojo Ich genieße deinen Sinn für Humor. Hoffentlich hören die Overlords zu, damit sie diesen DIY-B-Tree-Kanal pushen können. Mir gefällt auch besonders, wie alle Experimente so nützlich kategorisiert sind. Ich denke, sie haben nach Hash-Wert sortiert.
Cris Stringfellow
2
Ich hatte ein Problem mit diesem Shippet, aber das hier stackoverflow.com/a/8225200/497208 hat für mich funktioniert
Jakub M.
227

Führen Sie dies in Ihrer Konsole aus

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

Es erstellt ein neues Skript-Tag, füllt es mit jQuery und hängt es an den Kopf an.

Genesis
quelle
Das hat perfekt funktioniert, danke! (Für die Aufzeichnung erhielt ich "Uncaught TypeError: $ ist keine Funktion", und nachdem ich dies ausgeführt hatte, konnte ich $ -selector-Funktionen normal verwenden und verketten.)
Ayelis
5
Wenn Sie eine Sicherheitsmeldung erhalten (z. B. auf Facebook), kopieren Sie einfach den Inhalt von jquery.js in die Javascript-Konsole.
Thomas Decaux
1
Funktioniert perfekt @genesis! 2017, MS Edge Browser.
Eric Hepperle - CodeSlayer2010
Das funktioniert perfekt und ist ein Lebensretter! Viel einfacher und unkomplizierter als andere Vorschläge.
Erica Summers
85

Kopieren Sie alles von:
https://code.jquery.com/jquery-3.4.1.min.js

Und fügen Sie es in die Konsole ein. Funktioniert perfekt.

Ruslanas Balčiūnas
quelle
12
Klappt wunderbar! Und es wird kein Skript zu DOM hinzugefügt, was manchmal aufgrund der Richtlinie zur Inhaltssicherheitsrichtlinie nicht möglich ist. Ich habe versucht, eine akzeptierte Antwort zu erhalten, die dazu führte: Das Laden des Skripts ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' wurde abgelehnt , da es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt: "script-src .. ..
Kangur
1
Überprüfen Sie zunächst, ob eine $ -Variable vorhanden ist. Wenn es nicht jQuery ist, sollte man wahrscheinlich jQuery loslassen und $ var festhalten. Nach dem Aufrufen des obigen Skripttyps: $ .noConflict ()
Kangur
Ich habe versucht, eine Vielzahl von 3-zeiligen Antworten zu verwenden. Keine von ihnen würde mir erlauben, jQueryoder zu verwenden $. Nur diese Lösung hat funktioniert. Und da ich die Protokollkonsole heutzutage nicht mehr zu oft benutze - sie befindet sich immer in meinem Befehlsverlauf, muss ich nach dem ersten Kopieren des Inhalts nur noch den Aufwärtspfeil drücken und dann eingeben. Sehr cool - danke
Gene Bo
reibungslose Antwort.! suchte nach deinem Top-Kommentar als Antwort! groß.
Irf
Web 3.0 sieht wie immer schön aus.
Undercat applaudiert Monica
63

Verwenden Sie die jQueryify-Broschüre:

http://marklets.com/jQuerify.aspx

Anstatt den Code in die anderen Antworten einzufügen, wird er zu einem anklickbaren Lesezeichen.

meder omuraliev
quelle
4
kann die anderen Antworten auch in ein Lesezeichen kopieren ..... einfach URL codieren und javascript:davor hinzufügen .
d -_- b
Was ist mit dem jQuery-Aufruf, der ein td-Element ändert? Das scheint ein bisschen zufällig und / oder gefährlich. "td.editselectoption [value = BN]" ...
Kimball Robinson
Facebook sagt: 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

Zusätzlich zur Antwort von @ jondavidjohn können wir sie auch als Lesezeichen mit der URL als Javascript-Code festlegen.

Name: Jquery einschließen

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);

und fügen Sie es dann der Symbolleiste von Chrome oder Firefox hinzu, sodass wir das Skript nicht immer wieder einfügen, sondern einfach auf das Lesezeichen klicken können.

Screenshot des Lesezeichens

manish_s
quelle
2
2 Verbesserungen: 1) Das Laden des Skripts dauert einige Zeit, sodass if (jQuery) ... fast immer fehlschlägt. Ich schlage vor, ein setTimeout hinzuzufügen, um das Laden zu verzögern. 2) Verwenden Sie nicht die neueste jquery, es ist nicht wirklich die neueste und die Verwendung ist veraltet (siehe diesen Blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone
Das jQuery.noConflict();ließ es auf einer zufälligen Site, auf der ich dies getestet habe, anscheinend nicht funktionieren. Es stellte sich heraus, dass sie bereits jQuery hatten, aber ihre jQuery hat $aus irgendeinem Grund keine Verknüpfung. Screenshot: prntscr.com/bdcpdh .
Rani Kheir
22

Ich bin ein Rebell.

Lösung: Verwenden Sie jQuery nicht. jQuery ist eine Bibliothek zum Abstrahieren der DOM-Inkonsistenzen zwischen den Browsern. Da Sie sich in Ihrer eigenen Konsole befinden, benötigen Sie diese Art der Abstraktion nicht.

Für Ihr Beispiel:

$$('element').length

( $$ist ein Alias ​​fürdocument.querySelectorAll in der Konsole.)

Für jedes andere Beispiel: Ich bin sicher, ich kann alles finden. Besonders wenn Sie einen modernen Browser verwenden (Chrome, FF, Safari, Opera).

Außerdem würde das Wissen, wie das DOM funktioniert, niemanden verletzen, sondern nur Ihr jQuery-Niveau erhöhen (ja, wenn Sie mehr über Javascript lernen, werden Sie bei jQuery besser).

Florian Margaine
quelle
4
Danke für die Idee Florian. Ich bin damit einverstanden, dass jeder, der jQuery verwendet, auch Javascript kennt. Das Laden von jQuery spart viel Zeit, nicht nur, weil es DOM-Inkonsistenzen abstrahiert. Die Selector-Engine sizzleist weitaus leistungsfähiger als alle nativen Javascript-Aufrufe. Nach so etwas $('div.className').children().hasClass('active').filter( function(index) { ... });zu fragen wäre ein Albtraum.
Mrtsherman
7
Meinst du document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine
6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...aber ja der Punkt steht: Wenn Sie einen modernen Browser haben, ist dom auch ohne jQuery schmerzlos. :)
Esailija
5
Du bist kein Rebell, anscheinend verschwendest du lieber Zeit damit, mehr zu tippen :)
Anderson Fortaleza
1
@DavidWest :1ist kein Pseudo-Selektor. Vielleicht willst du :first-child?
Florian Margaine
12

Ich habe gerade ein jQuery 3.2.1-Lesezeichen mit Fehlerbehandlung erstellt (nur laden, wenn nicht bereits geladen, Version erkennen, wenn bereits geladen, Fehlermeldung, wenn beim Laden ein Fehler auftritt). In Chrome 27 getestet. Es gibt keinen Grund, die "alte" jQuery 1.9.1 im Chrome-Browser zu verwenden, da jQuery 2.0 API-kompatibel mit 1.9 ist .

Führen Sie einfach Folgendes in der Entwicklerkonsole von Chrome aus oder ziehen Sie es per Drag & Drop in Ihre Lesezeichenleiste :

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...")}}})())

Lesbarer Quellcode finden Sie hier

fnkr
quelle
Dies funktioniert gut, obwohl die URL für die .js-Datei aktualisiert werden muss.
Dsomnus
Möglicherweise sendet die Website, auf der Sie dies verwenden möchten, einen benutzerdefinierten Content-Security-Policy-Header.
fnkr
8

Die beste Antwort von jondavidjohn ist gut, aber ich möchte sie optimieren, um ein paar Punkte anzusprechen:

  • Verschiedene Browser geben eine Warnung aus, wenn ein Skript von httpauf eine Seite geladen wird https.
  • Wenn Sie das jquery.comProtokoll nur so ändern , httpsdass eine Warnung angezeigt wird, wenn Sie es direkt über die URL-Leiste des Browsers versuchen:This is probably not the site you are looking for!
  • Ich verwende gerne das CDN von Google, wenn ich über die Konsole mit Google-Websites wie Google Mail experimentiere.

Mein einziges Problem ist, dass ich eine Versionsnummer angeben muss, bei der ich in der Konsole wirklich immer die neueste Version haben möchte.

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
quelle
1
Das Laden des Skripts ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' wurde abgelehnt , da es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt: "script-src 'self' 'unsicher-inline' 'unsicher-eval' ". Beachten Sie, dass 'script-src-elem' nicht explizit festgelegt wurde, sodass 'script-src' als Fallback verwendet wird.
Dimmduh
7

Per dieser Antwort :

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

Aus irgendeinem Grund muss ich es zweimal ausführen, um das neue '$' zu erhalten (was ich auch mit den anderen Methoden zu tun habe), aber es funktioniert.

Dies ist das Äquivalent, wenn Ihr Browser nicht so modern ist:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
vt5491
quelle
Vielleicht, weil es asynchron läuft, funktionieren die JS-Rückrufe und -Versprechen so. Um sicherzugehen, dass das Skript ausgeführt wird, müssen Sie Ihren eigenen Code innerhalb des 'then'-Rückrufs des Abrufversprechens ausführen : fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Hoffe das hilft dir.
Maciej Bukowski
Das hat bei mir nicht funktioniert. Aber zwei Auswertungen im letzten Block zu haben, hat funktioniert fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Dies ist eine deutliche Verbesserung gegenüber der zweimaligen Durchführung.
vt5491
Genial für Fälle, in denen Sie Probleme mit der Inhaltsrichtlinie haben
Alexey Sh.
5

Es ist ziemlich einfach, dies manuell zu tun, wie die anderen Antworten erklären. Es gibt aber auch das jQuerify-Plug-In .

Ken Redler
quelle
+1 - Danke Ken. Das Wort jQuerify erinnerte mich daran, dass ich dazu ein Lesezeichen erstellt habe. Ich fügte meine eigene Antwort hinzu, die den von mir verwendeten Code enthielt. Ich wusste, dass ich das schon mal gemacht hatte =).
Mrtsherman
2
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von der Überprüfung
adamb
@adamb, leider hat sich zusammen mit der Tendenz alter Links zum Verfall meine Zeit und Motivation, einige dieser sehr alten Antworten zu verbessern, im Laufe der Jahre gleichzeitig aufgelöst. Dank des Designs von SO können Sie die Antwort jedoch gerne selbst verbessern - ein Beitrag zum Kampf gegen die Entropie, der immer von Herzen geschätzt wird.
Ken Redler
5

FWIW, Firebug bettet den includespeziellen Befehl ein und jquery ist standardmäßig mit einem Alias ​​versehen: https://getfirebug.com/wiki/index.php/Include

In Ihrem Fall müssen Sie also nur Folgendes eingeben:

include("jquery");

Florent

fflorent
quelle
Eigentlich ist es include("http://code.jquery.com/jquery-latest.min.js", "jquery")zum ersten Mal zu verwenden. Wenn Sie nur include("jquery");den Fehler erhalten Alias 'jquery' not found.. include("jquery");dient zur Wiederverwendung derselben Bibliothek auf einer anderen Registerkarte / Domäne.
Machineaddict
1
Nicht seit Firebug 1.11.4, das standardmäßig ist (es sei denn, Sie haben vor dieser Version Aliase definiert): code.google.com/p/fbug/issues/detail?id=6133 (Hinweis: Ich bin der Autor dieser Funktion: ))
am
Ich habe Firebug 1.12.8 und wenn ich zu gehe, sagen wir Google, während include("jquery")ich in der Konsole laufe, bekomme ich diesen Fehler.
Machineaddict
Hmm, Sie sollten Firebug 2.0.8 verwenden, die neueste offizielle Version. Auch der Grund, warum include ("jquery") für Sie nicht funktioniert, liegt definitiv darin, dass Sie vor der Version 1.11.4 einen Alias ​​erstellt haben, wie ich bereits erwähnt habe. Entfernen Sie einfach die includeAliases.jsonDatei (die include()Aliase enthält ) in Ihrem Firefox-Profil und das sollte funktionieren.
fflorent
3

Diese Antwort basiert auf der Antwort von @genesis. Zuerst habe ich die Lesezeichenversion @jondavidjohn ausprobiert und sie funktioniert nicht. Deshalb ändere ich sie in diese (füge sie deinem Lesezeichen hinzu):

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')}());

Worte der Vorsicht, wird nicht in Chrom getestet, sondern funktioniert in Firefox und nicht in Konfliktumgebung getestet.

whale_steward
quelle
2

Eine der kürzesten Möglichkeiten wäre das Kopieren und Einfügen des folgenden Codes in die Konsole.

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
quelle
1

Wenn Sie dies für ein Userscript tun möchten, habe ich Folgendes geschrieben: http://userscripts.org/scripts/show/123588

Sie können damit jQuery sowie die Benutzeroberfläche und alle gewünschten Plugins einbinden. Ich verwende es auf einer Site mit 1.5.1 und ohne Benutzeroberfläche. Dieses Skript gibt mir stattdessen 1.7.1 plus Benutzeroberfläche und keine Konflikte in Chrome oder FF. Ich habe Opera nicht selbst getestet, aber andere haben mir gesagt, dass es dort auch für sie funktioniert. Daher sollte dies eine vollständige browserübergreifende UserScript-Lösung sein, wenn Sie dies tun müssen.

BrianFreud
quelle
1

Hier ist alternativer Code:

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);})();

Diese können entweder direkt in die Konsole eingefügt oder eine neue Lesezeichenseite erstellt werden (klicken Sie in Chrome mit der rechten Maustaste auf die Lesezeichenleiste , Seite hinzufügen ... ) und fügen Sie diesen Code als URL ein.

Um zu testen, ob das funktioniert hat, siehe unten.

Vor:

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

Nach:

$()
[]
Kenorb
quelle
1

Wenn Sie jQuery häufig über die Konsole verwenden möchten, können Sie problemlos ein Benutzer-Skript schreiben. Installieren Sie zuerst Tampermonkey, wenn Sie Chrome verwenden, und Greasemonkey, wenn Sie Firefox verwenden. Schreiben Sie ein einfaches Benutzer-Skript mit einer Verwendungsfunktion wie dieser:

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
quelle
1

Schlüsselfertige Lösung :

Setzen Sie Ihren Code in yourCode_hereFunktion. Und verhindern Sie HTML ohne HEAD-Tag.

(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
quelle
1

Moderne Browser (getestet auf Chrome, Firefox, Safari) implementieren einige Hilfsfunktionen mit dem Dollarzeichen $, die jQuery sehr ähnlich sind (wenn die Website nichts mit definiert window.$).

Diese Dienstprogramme sind sehr nützlich, um Elemente im DOM auszuwählen und zu ändern.

Dokumente: Chrome , Firefox

Zanon
quelle