Inclure jQuery dans la console JavaScript

772

Existe-t-il un moyen simple d'inclure jQuery dans la console JavaScript Chrome pour les sites qui ne l'utilisent pas? Par exemple, sur un site Web, j'aimerais obtenir le nombre de lignes d'un tableau. Je sais que c'est vraiment facile avec jQuery.

$('element').length;

Le site n'utilise pas jQuery. Puis-je l'ajouter à partir de la ligne de commande?

mrtsherman
la source
3
Pour plus d'une approche automatisée, vous pouvez utiliser un script utilisateur pour l'inclure. Sérieusement, ce serait comme un script utilisateur de 5 lignes: P
rlemon
9
document.getElementById('tableID').rows.length. Si la table n'a pas d'ID, utilisez l'éditeur DOM pour lui en donner un. Vous n'avez pas besoin de jQuery pour quelque chose d'aussi absurdement trivial.
Niet the Dark Absol
Il existe une extension chrome pour ce faire - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha
1
ajoutez-le à une balise de script, à partir de cdn ou localement. CDN est beaucoup plus simple.
Donato
1
Je pense que la plupart des outils de développement des principaux navigateurs incluent désormais jQuery (et quelques autres bibliothèques populaires comme Underscore) par défaut, mais je ne parviens pas à en trouver la documentation. Ouvrez la console, il fonctionne généralement juste (tm). ------ En outre, cette approche a (depuis) ​​longtemps été intégrée dans un bookmarklet pratique par plusieurs personnes. J'ai utilisé celui-ci avec succès: learningjquery.com/2009/04/… .
brichins

Réponses:

1377

Exécutez ceci dans la console JavaScript de votre navigateur, alors jQuery devrait être disponible ...

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

REMARQUE: si le site contient des scripts en conflit avec jQuery (autres bibliothèques, etc.), vous pouvez toujours rencontrer des problèmes.

Mise à jour:

Améliorer le meilleur, créer un signet le rend vraiment pratique, faisons-le, et un petit retour est aussi très bien:

  1. Cliquez avec le bouton droit sur la barre de signets, puis cliquez sur Ajouter une page
  2. Nommez-le comme vous le souhaitez, par exemple Injecter jQuery, et utilisez la ligne suivante pour URL:

javascript: (fonction (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')

Voici le code formaté:

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

Ici, l'URL jQuery CDN officielle est utilisée, n'hésitez pas à utiliser votre propre CDN / version.

jondavidjohn
la source
180
Cet extrait n'a pas fonctionné pour moi. Je n'ai pas eu le temps de comprendre pourquoi. Il suffit de copier le contenu du fichier code.jquery.com/jquery-latest.min.js et de le coller dans la console. Fonctionne parfaitement.
Ruslanas Balčiūnas
9
Maintenant, j'ai juste besoin d'un raccourci clavier de console chromée pour cela ^^. Je continue d'utiliser cet extrait de code et de revenir ici pour l'obtenir.
Cris Stringfellow
6
@CrisStringfellow - AKAIK il y a une fonctionnalité d'extraits de développeur dans les travaux, vérifiez votre chrome:flagset voyez si elle est là, vous devrez l'activer.
ocodo
2
@Slomojo J'apprécie votre sens de l'humour. Espérons que les suzerains écoutent, afin qu'ils puissent pousser ce canal de bricolage. J'aime aussi particulièrement la façon dont toutes les expériences sont catégorisées si utilement. Je pense qu'ils ont trié la valeur de hachage.
Cris Stringfellow
2
J'ai eu un problème avec ce shippet, mais celui ici stackoverflow.com/a/8225200/497208 a fonctionné pour moi
Jakub M.
227

Exécutez ceci dans votre console

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

Il crée une nouvelle balise de script, la remplit de jQuery et ajoute à la tête.

genèse
la source
Cela a parfaitement fonctionné, merci! (Pour mémoire, je recevais "Uncaught TypeError: $ n'est pas une fonction", et après l'avoir exécutée, j'ai pu utiliser et chaîner les fonctions $ -selector normalement.)
Ayelis
5
Si vous recevez un message de sécurité (sur Facebook par exemple), copiez / collez simplement le contenu jquery.js dans la console javascript.
Thomas Decaux
1
Fonctionne parfaitement @genesis! 2017, navigateur MS Edge.
Eric Hepperle - CodeSlayer2010
Cela fonctionne parfaitement et est une bouée de sauvetage! Beaucoup plus simple et direct que d'autres suggestions.
Erica Summers du
85

Copiez tout depuis:
https://code.jquery.com/jquery-3.4.1.min.js

Et collez-le dans la console. Marche parfaitement.

Ruslanas Balčiūnas
la source
12
Fonctionne comme un charme! Et il n'ajoute pas de script au DOM, ce qui n'est parfois pas possible en raison de la «directive sur la politique de sécurité du contenu». J'ai essayé la réponse acceptée qui a abouti à: Refus de charger le script ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' car il viole la directive de politique de sécurité du contenu suivante: "script-src .. ..
Kangur
1
Vérifiez d'abord s'il y a une variable $. Si ce n'est pas jQuery, il faut probablement lâcher prise jQuery sur $ var. Après avoir invoqué le type de script ci-dessus: $ .noConflict ()
Kangur
J'ai essayé d'utiliser une variété de réponses sur 3 lignes .. aucune ne me permettait d'utiliser jQueryou $. Seule cette solution a fonctionné. Et puis, puisque je n'utilise pas la console de journalisation trop souvent de nos jours - elle est toujours dans mon historique de commandes, donc après la première fois que j'ai copié le contenu - maintenant, il suffit de taper sur la flèche vers le haut puis d'entrer. Très cool - merci
Gene Bo
réponse fluide.! cherchait votre meilleur commentaire comme réponse! génial.
Irf
Le Web 3.0 est toujours aussi beau.
undercat applaudit Monica le
63

Utilisez le livret jQueryify:

http://marklets.com/jQuerify.aspx

Au lieu de copier-coller le code dans les autres réponses, cela en fera un signet cliquable.

meder omuraliev
la source
4
peut également copier les autres réponses dans un bookmarklet ..... il suffit de coder l'URL et de l'ajouter javascript:avant.
d -_- b
Qu'en est-il de l'appel jQuery qui modifie un élément td? Cela semble un peu aléatoire et / ou dangereux. "td.editselectoption [value = BN]" ...
Kimball Robinson
Facebook dit: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

Ajout à la réponse de @ jondavidjohn, nous pouvons également le définir comme un signet avec URL comme code javascript.

Nom: Inclure 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);

puis l'ajouter à la barre d'outils de Chrome ou Firefox afin qu'au lieu de coller le script encore et encore, nous puissions simplement cliquer sur le bookmarklet.

Capture d'écran du signet

manish_s
la source
2
2 améliorations: 1) le chargement du script prend du temps, donc le if (jQuery) ... échouera presque toujours. Je suggère d'ajouter un setTimeout pour retarder la charge; 2) n'utilisez pas le jquery-latest, ce n'est pas vraiment le dernier et son utilisation est déconseillée (regardez ce blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone
Le jQuery.noConflict();fait sembler ne pas fonctionner sur un site aléatoire sur lequel je testais cela. Il s'est avéré qu'ils avaient déjà jQuery, mais leur jQuery n'a pas le $raccourci pour une raison quelconque. Capture d'écran: prntscr.com/bdcpdh .
Rani Kheir
22

Je suis une rebelle.

Solution: n'utilisez pas jQuery. jQuery est une bibliothèque pour résumer les incohérences DOM à travers les navigateurs. Puisque vous êtes dans votre propre console, vous n'avez pas besoin de ce type d'abstraction.

Pour votre exemple:

$$('element').length

( $$est un alias de document.querySelectorAllla console.)

Pour tout autre exemple: je suis sûr que je peux trouver n'importe quoi. Surtout si vous utilisez un navigateur moderne (Chrome, FF, Safari, Opera).

De plus, savoir comment fonctionne le DOM ne nuirait à personne, cela ne ferait qu'augmenter votre niveau de jQuery (oui, en savoir plus sur javascript vous rend meilleur chez jQuery).

Florian Margaine
la source
4
Merci pour l'idée Florian. Je conviens que toute personne utilisant jQuery devrait également connaître javascript. Le chargement de jQuery est un gros gain de temps, non seulement parce qu'il résume les incohérences DOM. Son moteur de sélection sizzle, est beaucoup plus puissant que tous les appels natifs javascript. Demander quelque chose comme ça $('div.className').children().hasClass('active').filter( function(index) { ... });serait un cauchemar en clair.
mrtsherman
7
Tu veux dire document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine
6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...mais oui, le point est vrai : si vous avez un navigateur moderne, dom est indolore même sans jQuery. :)
Esailija
5
Vous n'êtes pas un rebelle, il semble plutôt que vous aimez perdre du temps à taper plus :)
Anderson Fortaleza
1
@DavidWest :1n'est pas un pseudo sélecteur. Peut-être que tu veux :first-child?
Florian Margaine
12

Je viens de créer un bookmarklet jQuery 3.2.1 avec gestion des erreurs (charger uniquement s'il n'est pas déjà chargé, détecter la version s'il est déjà chargé, message d'erreur si erreur lors du chargement). Testé dans Chrome 27. Il n'y a aucune raison d'utiliser le "vieux" jQuery 1.9.1 sur le navigateur Chrome car jQuery 2.0 est compatible avec l'API avec 1.9 .

Exécutez simplement ce qui suit dans la console développeur de Chrome ou glissez-déposez-le dans votre barre de favoris :

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

Le code source lisible est disponible ici

fnkr
la source
Cela fonctionne bien même si l'url du fichier .js doit être mise à jour.
dsomnus
Peut-être que le site Web sur lequel vous essayez d'utiliser cela envoie un en-tête Content-Security-Policy personnalisé.
fnkr
8

La meilleure réponse, par jondavidjohn, est bonne mais je voudrais la modifier pour répondre à quelques points:

  • Divers navigateurs émettent un avertissement lors du chargement d'un script depuis httpune page surhttps .
  • Le simple fait de modifier jquery.comle protocole de httpsaboutit à un avertissement si vous l'essayez directement depuis la barre d'URL du navigateur:This is probably not the site you are looking for!
  • J'aime utiliser le CDN de Google lorsque j'utilise la console pour tester des sites Google tels que Gmail.

Mon seul problème est que je dois inclure un numéro de version où je veux vraiment toujours la dernière dans la console.

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
la source
1
Refus de charger le script « ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js » car il enfreint la directive de politique de sécurité du contenu suivante: «script-src« self »« unsafe-inline » 'unsafe-eval' ". Notez que 'script-src-elem' n'était pas explicitement défini, donc 'script-src' est utilisé comme solution de rechange.
Dimmduh
7

Par cette réponse :

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

Pour une raison quelconque, je dois l'exécuter deux fois pour obtenir le nouveau «$» (ce que je dois faire avec les autres méthodes également), mais cela fonctionne.

C'est l'équivalent si votre navigateur n'est pas aussi moderne:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
vt5491
la source
Peut-être parce qu'il fonctionne de manière asynchrone, c'est ainsi que fonctionnent les rappels et promesses JS. Donc , pour être sûr que script est exécuté, vous devez exécuter votre propre code dans la fonction de rappel « puis » de la promesse chercher: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). J'espère que cela vous aidera.
Maciej Bukowski
Cela n'a pas fonctionné pour moi. Mais avoir deux épreuves dans le dernier bloc a fonctionné fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). C'est une nette amélioration par rapport au fait de devoir le faire deux fois.
vt5491
génial pour les cas où vous avez un problème avec la politique de contenu
Alexey Sh.
5

Il est assez facile de le faire manuellement, comme l'expliquent les autres réponses. Mais il y a aussi le plug-in jQuerify .

Ken Redler
la source
+1 - Merci Ken. Le mot jQuerify m'a rappelé que j'avais créé un bookmarklet pour ce faire. J'ai ajouté ma propre réponse qui avait le code que j'ai utilisé. Je savais que j'avais déjà fait ça avant =).
mrtsherman
2
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change. - De l'avis
adamb
@adamb, malheureusement, avec la tendance des anciens liens à se désintégrer, mon temps et ma motivation pour améliorer certaines de ces réponses très anciennes se sont dissipés de manière concomitante au fil des ans. Grâce à la conception de SO, cependant, vous êtes plus que bienvenus pour améliorer la réponse vous-même - une contribution à la lutte contre l'entropie qui est toujours chaleureusement appréciée.
Ken Redler
5

FWIW, Firebug intègre la includecommande spéciale et jquery est aliasé par défaut: https://getfirebug.com/wiki/index.php/Include

Donc dans votre cas, il vous suffit de taper:

include("jquery");

Florent

fflorent
la source
En fait, c'est include("http://code.jquery.com/jquery-latest.min.js", "jquery")pour la première fois. Si vous venez de include("jquery");vous obtenez l'erreur Alias 'jquery' not found.. include("jquery");sert à réutiliser la même bibliothèque sur un onglet / domaine différent.
machineaddict
1
Pas depuis Firebug 1.11.4, qui est par défaut (sauf si vous avez défini des alias avant cette version): code.google.com/p/fbug/issues/detail?id=6133 (Remarque: je suis l'auteur de cette fonctionnalité: ))
fflorent
J'ai Firebug 1.12.8 et si je vais à, disons Google, en exécutant include("jquery")dans la console, j'obtiens cette erreur.
machineaddict
Hmm, vous devez utiliser Firebug 2.0.8, qui est la dernière version officielle. La raison pour laquelle include ("jquery") ne fonctionne pas pour vous est certainement parce que vous avez créé un alias avant la version 1.11.4 comme je l'ai mentionné. Supprimez simplement le includeAliases.jsonfichier (qui contient des include()alias) dans votre profil Firefox et cela devrait fonctionner.
fflorent
3

cette réponse basée sur la réponse @genesis, j'ai d'abord essayé la version du signet @jondavidjohn, et cela ne fonctionne pas, alors je la change en ceci (ajoutez-la à votre signet):

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

mots de prudence, n'est pas testé dans Chrome mais fonctionne dans Firefox, et non testé dans un environnement de conflit.

whale_steward
la source
2

L'un des moyens les plus courts serait de copier-coller le code ci-dessous sur la 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);
RegarBoy
la source
1

Si vous cherchez à le faire pour un script utilisateur, j'ai écrit ceci: http://userscripts.org/scripts/show/123588

Cela vous permettra d'inclure jQuery, ainsi que l'interface utilisateur et tous les plugins que vous souhaitez. Je l'utilise sur un site qui a 1.5.1 et aucune interface utilisateur; ce script me donne 1.7.1 à la place, plus l'interface utilisateur, et aucun conflit dans Chrome ou FF. Je n'ai pas testé Opera moi-même, mais d'autres m'ont dit que cela fonctionnait aussi pour eux, donc cela devrait être plutôt une solution complète de script utilisateur multi-navigateur, si c'est pour cela que vous devez le faire.

BrianFreud
la source
1

Voici un code alternatif:

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

qui peut être collé directement dans la console ou créer une nouvelle page de signets (dans Chrome, cliquez avec le bouton droit sur la barre de signets , Ajouter une page ... ) et collez ce code comme URL.

Pour tester si cela a fonctionné, voir ci-dessous.

Avant:

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

Après:

$()
[]
kenorb
la source
1

Si vous souhaitez utiliser jQuery fréquemment à partir de la console, vous pouvez facilement écrire un script utilisateur. Tout d'abord, installez Tampermonkey si vous êtes sur Chrome et Greasemonkey si vous êtes sur Firefox. Écrivez un simple script utilisateur avec une fonction d'utilisation comme celle-ci:

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
la source
1

Solution clé en main:

Mettez votre code en yourCode_herefonction. Et empêchez HTML sans balise 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
la source
1

Les navigateurs modernes (testés sur Chrome, Firefox, Safari) implémentent certaines fonctions d' aide en utilisant le signe dollar $qui sont très similaires à jQuery (si le site Web ne définit pas quelque chose en utilisantwindow.$ ).

Ces utilitaires sont très utiles pour sélectionner des éléments dans le DOM et les modifier.

Documents: Chrome , Firefox

Zanon
la source