Includi jQuery nella console JavaScript


772

Esiste un modo semplice per includere jQuery nella console JavaScript di Chrome per i siti che non lo utilizzano? Ad esempio, su un sito Web vorrei ottenere il numero di righe in una tabella. So che è molto semplice con jQuery.

$('element').length;

Il sito non utilizza jQuery. Posso aggiungerlo dalla riga di comando?


3
Per un approccio più automatizzato è possibile utilizzare uno script utente per includerlo. Scherzi a parte questo sarebbe come uno
script di utenti

9
document.getElementById('tableID').rows.length. Se la tabella non ha un ID, utilizzare l'editor DOM per assegnargliene uno. Non hai bisogno di jQuery per qualcosa di così assurdamente banale.
Niet the Dark Absol,

Esiste un'estensione di Chrome per farlo - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha

1
aggiungilo a un tag di script, da cdn o localmente. La CDN è molto più semplice.
Donato,

1
Credo che la maggior parte dei Dev Tools dei principali browser ora includano jQuery (e alcune altre librerie popolari come Underscore) per impostazione predefinita, ma non riesco a trovare la documentazione. Apri la console di solito funziona solo (tm). ------ Inoltre, questo approccio è (ormai) da tempo incorporato in un pratico bookmarklet da più persone. Ho usato questo con successo: learningjquery.com/2009/04/… .
brichins,

Risposte:


1377

Esegui questo nella console JavaScript del tuo browser, quindi jQuery dovrebbe essere disponibile ...

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

NOTA: se nel sito sono presenti script in conflitto con jQuery (altre librerie, ecc.), Potresti comunque riscontrare problemi.

Aggiornare:

Migliorare il meglio, creare un segnalibro lo rende davvero conveniente, facciamolo e anche un piccolo feedback è fantastico:

  1. Fare clic con il pulsante destro del mouse sulla barra dei segnalibri e fare clic su Aggiungi pagina
  2. Nominalo come preferisci, ad esempio Inject jQuery e usa la seguente riga per l'URL:

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

Di seguito è riportato il codice formattato:

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

Qui viene utilizzato l'URL CDN jQuery ufficiale, sentiti libero di usare la tua CDN / versione.


180
Questo frammento non ha funzionato per me. Non ho avuto il tempo di capire perché. Basta copiare il contenuto del file code.jquery.com/jquery-latest.min.js e incollarlo nella console. Funziona perfettamente
Ruslanas Balčiūnas,

9
Ora ho solo bisogno di un tasto di scelta rapida della console Chrome per questo ^^. Continuo a usare questo frammento e navigare di nuovo qui per ottenerlo.
Cris Stringfellow,

6
@CrisStringfellow - AKAIK c'è una funzione di snippet per sviluppatori in lavorazione, controlla la tua chrome:flagse vedi se è lì, dovrai accenderla.
ocodo

2
@Slomojo Mi sto godendo il tuo senso dell'umorismo. Eventualmente i signori stanno ascoltando, quindi possono spingere quel canale b-tree fai-da-te. Mi piace anche in particolare come tutti gli esperimenti siano classificati in modo così utile. Penso che abbiano ordinato il valore di hash.
Cris Stringfellow

2
Ho avuto un problema con questo shippet, ma quello qui stackoverflow.com/a/8225200/497208 ha funzionato per me
Jakub M.

227

Esegui questo nella tua console

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

Crea un nuovo tag di script, lo riempie di jQuery e lo aggiunge alla testa.


Questo ha funzionato perfettamente, grazie! (Per la cronaca, stavo ottenendo "Uncaught TypeError: $ non è una funzione", e dopo averlo eseguito, sono stato in grado di utilizzare e incatenare normalmente le funzioni $ -selector.)
Ayelis,

5
Se ricevi un messaggio di sicurezza (ad esempio su Facebook), copia / incolla il contenuto jquery.js nella console javascript.
Thomas Decaux,

1
Funziona perfettamente @genesis! 2017, browser MS Edge.
Eric Hepperle - CodeSlayer2010,

Funziona perfettamente ed è un vero toccasana! Molto più semplice e diretto rispetto ad altri suggerimenti.
Erica Summers

85

Copia tutto da:
https://code.jquery.com/jquery-3.4.1.min.js

E incollalo nella console. Funziona perfettamente.


12
Funziona come un fascino! E non aggiunge script a DOM che a volte non è possibile a causa della "Direttiva sulla politica di sicurezza dei contenuti". Ho provato una risposta accettata che ha prodotto: Rifiutato di caricare lo script " ajax.googleapis.com/ajax/libs/jquery/1/jquery.js " perché viola la seguente direttiva sulla politica di sicurezza dei contenuti: "script-src .. ..
Kangur,

1
Prima controlla se c'è una variabile $. Se non è jQuery, probabilmente dovresti lasciar andare jQuery su $ var. Dopo aver invocato il tipo di script sopra: $ .noConflict ()
Kangur

Ho provato a usare una varietà di risposte a 3 righe .. nessuna di queste mi avrebbe permesso di usare jQueryo $. Solo questa soluzione ha funzionato. E poi dal momento che non sto usando la console di registro altrimenti troppo in questi giorni - è sempre nella mia cronologia dei comandi, quindi dopo la prima volta che ho copiato il contenuto - ora, ho solo bisogno di premere la freccia su e quindi inserire. Molto bello - grazie
Gene Bo

risposta regolare.! cercavo il tuo commento migliore come risposta! grande.
Irf,

Il Web 3.0 sembra più bello che mai.
undercat applaude Monica il

63

Usa l'opuscolo jQueryify:

http://marklets.com/jQuerify.aspx

Invece di copiare incollando il codice nelle altre risposte, questo lo renderà un segnalibro cliccabile.


4
puoi copiare anche le altre risposte in un bookmarklet ..... basta codificare l'URL e aggiungerlo javascript:prima.
d -_- b

Che cos'è la chiamata jQuery che modifica un elemento td? Sembra un po 'casuale e / o pericoloso. "td.editselectoption [value = BN]" ...
Kimball Robinson,

Facebook dice: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

Aggiungendo alla risposta di @jondavidjohn, possiamo anche impostarlo come segnalibro con URL come codice javascript.

Nome: include 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);

e poi aggiungilo alla barra degli strumenti di Chrome o Firefox in modo che invece di incollare lo script ancora e ancora, possiamo semplicemente fare clic sul bookmarklet.

Schermata del segnalibro


2
2 miglioramenti: 1) ci vuole tempo per caricare lo script, quindi if (jQuery) ... fallirà quasi sempre. Suggerisco di aggiungere un setTimeout per ritardare il caricamento; 2) non usare jquery-latest, non è proprio l'ultimo e il suo uso è deprecato (guarda questo blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone

Il jQuery.noConflict();fatto apparire di non lavoro su un sito a caso stavo testando questo su. Si è scoperto che avevano già jQuery, ma il loro jQuery non ha il $collegamento per qualche motivo. Schermata: prntscr.com/bdcpdh .
Rani Kheir,

22

Sono un ribelle.

Soluzione: non usare jQuery. jQuery è una libreria per astrarre le incoerenze del DOM attraverso i browser. Dato che sei nella tua console, non hai bisogno di questo tipo di astrazione.

Per il tuo esempio:

$$('element').length

( $$è un alias di document.querySelectorAllnella console.)

Per qualsiasi altro esempio: sono sicuro di poter trovare qualsiasi cosa. Soprattutto se si utilizza un browser moderno (Chrome, FF, Safari, Opera).

Inoltre, sapere come funziona il DOM non farebbe male a nessuno, aumenterebbe solo il tuo livello di jQuery (sì, imparare di più su javascript ti rende migliore su jQuery).


4
Grazie per l'idea Florian. Sono d'accordo che chiunque usi jQuery dovrebbe anche conoscere javascript. Il caricamento di jQuery consente di risparmiare molto tempo non solo perché consente di eliminare le incoerenze del DOM. Il suo motore di selezione sizzle, è molto più potente di qualsiasi chiamata javascript nativa. Interrogare qualcosa del genere $('div.className').children().hasClass('active').filter( function(index) { ... });sarebbe un incubo in pianura.
mrtsherman,

7
Intendi document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine,

6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...ma sì, il punto è valido : se si dispone di un browser dom moderno è indolore anche senza jQuery. :)
Esailija,

5
Non sei un ribelle, sembra, invece, che ti piace perdere tempo a scrivere di più :)
Anderson Fortaleza,

1
@DavidWest :1non è uno pseudo-selettore. Forse vuoi :first-child?
Florian Margaine,

12

Ho appena creato un bookmarklet jQuery 3.2.1 con gestione degli errori (carica solo se non già caricato, rileva versione se già caricato, messaggio di errore se errore durante il caricamento). Testato su Chrome 27. Non vi è alcun motivo per utilizzare il "vecchio" jQuery 1.9.1 sul browser Chrome poiché jQuery 2.0 è compatibile con API con 1.9 .

Basta eseguire quanto segue nella console per sviluppatori di Chrome o trascinarlo nella barra dei segnalibri :

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

Il codice sorgente leggibile è disponibile qui


Funziona bene anche se l'URL del file .js deve essere aggiornato.
dsomnus,

Forse il sito Web su cui si sta tentando di utilizzare questo invia un'intestazione Content-Security-Policy personalizzata.
fnkr

8

La risposta migliore, di jondavidjohn, è buona, ma vorrei modificarla per affrontare un paio di punti:

  • Vari browser emettono un avviso quando si carica uno script da httpuna pagina su https.
  • Basta cambiare jquery.comil protocollo per httpsottenere un avviso se lo provi direttamente dalla barra degli URL del browser:This is probably not the site you are looking for!
  • Mi piace usare la CDN di Google quando utilizzo la console per sperimentare siti di Google come Gmail.

Il mio unico problema è che devo includere un numero di versione in cui nella console voglio sempre l'ultimo.

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

1
Rifiutato di caricare lo script ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' perché viola la seguente direttiva sulla politica di sicurezza dei contenuti: "script-src 'self' 'unsafe-inline' 'insicuro-eval'". Si noti che 'script-src-elem' non è stato impostato in modo esplicito, quindi 'script-src' viene utilizzato come fallback.
Dimmduh,

7

Per questa risposta :

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

Per qualche motivo devo eseguirlo due volte per ottenere il nuovo '$' (che ho a che fare anche con gli altri metodi), ma funziona.

Questo è l'equivalente se il tuo browser non è così moderno:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})

Forse perché funziona in modo asincrono, è così che funzionano i callback e le promesse di JS. Quindi, per essere sicuri che lo script viene eseguito, è necessario eseguire il proprio codice all'interno del 'poi' callback della promessa recupero: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Spero che questo ti aiuti.
Maciej Bukowski il

Non ha funzionato per me. Ma avere due eval nell'ultimo blocco ha funzionato fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Questo è un netto miglioramento rispetto al doverlo fare due volte.
vt5491,

fantastico per i casi in cui hai problemi con la politica dei contenuti
Alexey Sh.

5

È abbastanza facile farlo manualmente, come spiegano le altre risposte. Ma c'è anche il plug-in jQuerify .


+1 - Grazie Ken. La parola jQuerify mi ha ricordato che ho creato un bookmarklet per farlo. Ho aggiunto la mia risposta che aveva il codice che ho usato. Sapevo di averlo fatto prima =).
mrtsherman,

2
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Adamb

@adamb, sfortunatamente, insieme alla tendenza dei vecchi legami a decadere, il mio tempo e la mia motivazione per migliorare alcune di queste risposte molto antiche si sono dissipate contemporaneamente negli anni. Grazie al design di SO, tuttavia, sei più che benvenuto nel migliorare tu stesso la risposta - un contributo alla lotta contro l'entropia che è sempre apprezzato di cuore.
Ken Redler

5

FWIW, Firebug incorpora il includecomando speciale e jquery è alias di default: https://getfirebug.com/wiki/index.php/Include

Quindi nel tuo caso, devi solo digitare:

include("jquery");

Florent


In realtà è include("http://code.jquery.com/jquery-latest.min.js", "jquery")per il primo utilizzo. Se solo include("jquery");tu ricevi l'errore Alias 'jquery' not found.. include("jquery");serve per riutilizzare la stessa libreria su una scheda / dominio diverso.
machineaddict

1
Non da Firebug 1.11.4, che è per impostazione predefinita (a meno che non siano stati definiti alias prima di questa versione): code.google.com/p/fbug/issues/detail?id=6133 (Nota: sono l'autore di questa funzione: ))
flfentent

Ho Firebug 1.12.8 e se vado a, diciamo Google, mentre l'esecuzione include("jquery")in console mi dà quell'errore .
Machineaddict

Hmm, dovresti usare Firebug 2.0.8, che è l'ultima versione ufficiale. Anche il motivo per cui include ("jquery") non funziona per te è sicuramente perché hai creato un alias prima della versione 1.11.4, come ho già detto. Basta rimuovere il includeAliases.jsonfile (che contiene include()alias) nel tuo profilo di Firefox e dovrebbe funzionare.
fiorente

3

questa risposta basata sulla risposta di @genesis, all'inizio ho provato la versione del segnalibro @jondavidjohn e non funziona, quindi la cambio in questo (aggiungerla al tuo segnalibro):

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

parole di avvertenza, non è testato in Chrome ma funziona in Firefox e non testato in un ambiente di conflitto.


2

Uno dei modi più brevi sarebbe semplicemente copiare e incollare il codice qui sotto sulla console.

var jquery = document.createElement('script'); 
jquery.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.head.appendChild(jquery);

1

Se stai cercando di farlo per uno script utente, ho scritto questo: http://userscripts.org/scripts/show/123588

Ti consentirà di includere jQuery, l'interfaccia utente e tutti i plug-in che desideri. Lo sto usando su un sito che ha 1.5.1 e nessuna UI; questo script mi ​​offre invece 1.7.1, oltre all'interfaccia utente e nessun conflitto in Chrome o FF. Non ho testato Opera da solo, ma altri mi hanno detto che ha funzionato anche lì per loro, quindi questa dovrebbe essere piuttosto una soluzione completa per gli utenti cross-browser, se è per questo che devi farlo.


1

Ecco un codice alternativo:

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

che può essere incollato direttamente nella console o creare una nuova pagina dei segnalibri (in Chrome, fare clic con il pulsante destro del mouse sulla barra dei segnalibri , Aggiungi pagina ... ) e incollare questo codice come URL.

Per verificare se ha funzionato, vedi sotto.

Prima:

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

Dopo:

$()
[]

1

Se si desidera utilizzare jQuery frequentemente dalla console, è possibile scrivere facilmente uno script utente. Innanzitutto, installa Tampermonkey se sei su Chrome e Greasemonkey se sei su Firefox. Scrivi un semplice script utente con una funzione d'uso come questa:

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

1

Soluzione chiavi in ​​mano :

Metti il ​​tuo codice in yourCode_herefunzione. E impedisce HTML senza tag 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>");
}


1

I browser moderni (testati su Chrome, Firefox, Safari) implementano alcune funzioni di supporto usando il simbolo del dollaro $che sono molto simili a jQuery (se il sito Web non definisce qualcosa usando window.$).

Queste utility sono abbastanza utili per selezionare elementi nel DOM e modificarli.

Documenti: Chrome , Firefox


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.