Include jQuery in the JavaScript Console
Asked Answered
C

23

887

Is there an easy way to include jQuery in the Chrome JavaScript console for sites that do not use it? For example, on a website I would like to get the number of rows in a table. I know this is really easy with jQuery.

$('element').length;

The site does not use jQuery. Can I add it in from the command line?

Calling answered 19/9, 2011 at 16:42 Comment(6)
For more of an automated approach you can use a userscript to include it. Seriously this would be like a 5 line userscript :PRemind
document.getElementById('tableID').rows.length. If the table doesn't have an ID, use the DOM editor to give it one. You don't need jQuery for something so absurdly trivial.Hema
There is a chrome extension to do this - chrome.google.com/webstore/detail/script-injector/…Catinacation
add it to a script tag, either from cdn or locally. CDN is much simpler.Hoenir
I believe most of the major browsers' Dev Tools now include jQuery (and a few other popular libraries like Underscore) by default, but am unable to find documentation of it. Pop open the console it usually Just Works (tm). ------ Also, this approach has (now) long since been built into a handy bookmarklet by several people. I have used this one successfully: learningjquery.com/2009/04/….Gaillardia
Did you know that the dollar sign function has already been loaded in Chrome devtools? You can use $ to query select elementsBurschenschaft
O
1587

Run this in your browser's JavaScript console, then jQuery should be available...

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.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();

NOTE: if the site has scripts that conflict with jQuery (other libs, etc.) you could still run into problems.

Update:

Making the best better, creating a Bookmark makes it really convenient, let's do it, and a little feedback is great too:

  1. Right click the Bookmarks Bar, and click Add Page
  2. Name it as you like, e.g. Inject jQuery, and use the following line for 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')

Below is the formatted 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')

Here the official jQuery CDN URL is used, feel free to use your own CDN/version.

Orthotropic answered 19/9, 2011 at 16:44 Comment(4)
This snippet didn't work for me. Had no time to figure it out why. Just copied code.jquery.com/jquery-latest.min.js file content and pasted into console. Works perfect.Educational
couldn't this be written as: ``` javascript: (function(e, s) { var element = document.createElement('script'); var jqueryUrl = '//code.jquery.com/jquery-latest.min.js'; element.src = jqueryUrl; element.onload = function() { jQuery.noConflict(); console.log('jQuery injected'); }; document.head.appendChild(e); }) ``` ?Bedcover
@RuslanasBalčiūnas, had time to figure it out, added a solution that works with bookmarks. https://mcmap.net/q/53503/-include-jquery-in-the-javascript-consoleLdopa
The URL 'code.jquery.com/jquery-latest.min.js' contains jQuery v.1.11.1, which is a very old version (here's the explanation why). You should use specific version insted.Clercq
K
281

Run this in your console:

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

It creates a new script tag, fills it with jQuery, and appends to the head.

Kokoruda answered 19/9, 2011 at 16:45 Comment(0)
A
125

Copy everything from:
https://code.jquery.com/jquery-3.4.1.min.js

And paste it into console. Works perfectly.

Anacoluthon answered 22/11, 2012 at 11:34 Comment(1)
Works like a charm! And it doesn't add script to DOM which sometimes it's not possible due to 'Content Security Policy Directive'. I've tried accepted answer which resulted in: Refused to load the script 'ajax.googleapis.com/ajax/libs/jquery/1/jquery.js' because it violates the following Content Security Policy directive: "script-src ....Slack
Q
67

Use the jQueryify booklet:

https://web.archive.org/web/20190502132317/http://marklets.com/jQuerify.aspx

Instead of copy pasting the code in the other answers, this'll make it a clickable bookmark.

Quicklime answered 19/9, 2011 at 16:57 Comment(0)
M
40

Post 2020 method, using:

(async () => {
  await import('https://code.jquery.com/jquery-2.2.4.min.js')
  // Library ready
  console.log(jQuery)
})()

Without using async, and since import does return a Promise, we have to use .then() :

import('https://code.jquery.com/jquery-2.2.4.min.js')
  .then( () => {
    console.log(jQuery)
  }
)

Another example

https://caniuse.com/es6-module-dynamic-import

Manstopper answered 12/9, 2020 at 13:47 Comment(0)
B
31

Adding to @jondavidjohn's answer, we can also set it as a bookmark with URL as the javascript code.

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

and then add it to the toolbar of Chrome or Firefox so that instead of pasting the script again and again, we can just click on the bookmarklet.

Screenshot of bookmark

Bostic answered 23/5, 2013 at 12:2 Comment(0)
J
30

I'm a rebel.

Solution: don't use jQuery. jQuery is a library to abstract the DOM inconcistencies across the browsers. Since you're in your own console, you don't need this kind of abstraction.

For your example:

$$('element').length

($$ is an alias to document.querySelectorAll in the console.)

For any other example: I'm sure I can find anything. Especially if you're using a modern browser (Chrome, FF, Safari, Opera).

Besides, knowing how the DOM works wouldn't hurt anyone, it would only increase your level of jQuery (yes, learning more about javascript makes you better at jQuery).

Jehiah answered 6/4, 2012 at 20:8 Comment(0)
D
14

I just made a jQuery 3.2.1 bookmarklet with error-handling (only load if not already loaded, detect version if already loaded, error message if error while loading). Tested in Chrome 27. There is no reason to use the "old" jQuery 1.9.1 on Chrome browser since jQuery 2.0 is API-compatible with 1.9.

Just run the following in Chrome's developer console or drag & drop it in your bookmark bar:

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

Readable source-code is available here

Dichotomous answered 24/5, 2013 at 12:31 Comment(0)
P
9

The top answer, by jondavidjohn is good but I'd like to tweak it to address a couple of points:

  • Various browsers issue a warning when loading a script from http to a page on https.
  • Just changing jquery.com's protocol to https results in a warning if you try it straight from the browser's URL bar: This is probably not the site you are looking for!
  • I like to use Google's CDN when I'm using the console to experiment with Google sites such as Gmail.

My only issue is that I have to include a version number where in the console I really always want the latest.

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();
Pimiento answered 18/11, 2012 at 1:36 Comment(0)
E
8

Per this answer:

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

For some reason I have to execute it twice to get the new '$' (which I have to do with the other methods as well), but it works.

This is the equivalent if your browser isn't so modern:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
Estival answered 9/8, 2016 at 9:40 Comment(0)
P
5

It's pretty easy to do this manually, as the other answers explain. But there's also the jQuerify plug-in.

Pete answered 19/9, 2011 at 16:50 Comment(4)
+1 - Thanks Ken. The word jQuerify reminded me that I created a bookmarklet to do this. I added my own answer that had the code I used. I knew I had done this before =).Calling
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From ReviewPend
@adamb, unfortunately, along with the tendency of old links to decay, my time and motivation to improve some of these very old answers has concomitantly dissipated over the years. Thanks to the design of SO, however, you are more than welcome to improve the answer yourself — a contribution to the struggle against entropy that is always heartily appreciated.Pete
link is dead :(Phreno
E
5

FWIW, Firebug embeds the include special command, and jquery is aliased by default: https://getfirebug.com/wiki/index.php/Include

So in your case, you just have to type :

include("jquery");

Florent

Eldenelder answered 16/10, 2014 at 21:21 Comment(0)
G
3

this answer based on @genesis answer, at first I tried the bookmark version @jondavidjohn, and it is not working, so I change it to this (add it to your bookmark):

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

words of caution, is not tested in chrome but work in firefox, and not tested in conflict environment.

Greedy answered 21/10, 2016 at 6:36 Comment(0)
E
3

Modern browsers (tested on Chrome, Firefox, Safari) implement some helper functions using the dollar sign $ that are very similar to jQuery (if the website doesn't define something using window.$).

Those utilities are quite useful for selecting elements in the DOM and modifying them.

Docs: Chrome, Firefox

Euxenite answered 31/8, 2019 at 16:19 Comment(0)
T
2

One of the shortest ways would be just copy pasting the code below to the 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);
Tarragon answered 11/12, 2015 at 15:15 Comment(0)
C
1

If you're looking to do this for a userscript, I wrote this: http://userscripts.org/scripts/show/123588

It'll let you include jQuery, plus UI and any plugins you'd like. I'm using it on a site that has 1.5.1 and no UI; this script gives me 1.7.1 instead, plus UI, and no conflicts in Chrome or FF. I've not tested Opera myself, but others have told me it's worked there for them as well, so this ought to be pretty well a complete cross-browser userscript solution, if that's what you need to do this for.

Crankpin answered 22/1, 2012 at 6:20 Comment(0)
W
1

If you want to use jQuery frequently from the console you can easily write a userscript. First, install Tampermonkey if you are on Chrome and Greasemonkey if you are on Firefox. Write a simple userscript with a use function like this:

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;
    }
}
Wingover answered 18/1, 2014 at 6:25 Comment(0)
J
1

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

which can be pasted either directly in Console or create a new Bookmark page (in Chrome right-click on the Bookmark Bar, Add Page...) and paste this code as URL.

To test if that worked, see below.

Before:

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

After:

$()
[]
Jollification answered 29/9, 2015 at 11:28 Comment(0)
B
1

Turnkey solution :

Put your code in yourCode_here function. And prevent HTML without 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>");
}
Badman answered 14/9, 2018 at 11:19 Comment(0)
L
1

Here is a bookmark solution working in Chrome as of 2023.
This makes it so that you don't need to copy paste the injection script every time.

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

Set this in the URL field of your Chrome bookmark.

After clicking on the bookmark you can do something like this in the console:

$('element').length
Ldopa answered 4/8, 2023 at 9:49 Comment(0)
G
0

intuitive one-liner

document.write(unescape('%3Cscript src="https://code.jquery.com/jquery-3.1.1.min.js"%3E%3C/script%3E’))

You can change the src address.
I referred to ReferenceError: Can't find variable: jQuery

Gopher answered 18/1, 2017 at 2:59 Comment(0)
K
0

Another option is just save the jQuery content in a snippet(chrome) and run (Right click+Run or CTRL+Enter) it on which ever site you want. It's not necessarily jQuery any javascript if you want to run it on demand. (for ex: SharePoint JSOM.. just save all JSOM files as snippets and run it in the required order)

Kadiyevka answered 11/12, 2021 at 7:28 Comment(0)
S
-1

i have built upon the accepnted solution and made it better

var also_unconflict = typeof $ != "undefined";

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

if(also_unconflict){
    setTimeout(function(){
        $=jQuery.noConflict();
        console.log('jquery loaded, use jQuery instead of $')
    }, 500)
}else{
    console.log('jquery loaded, you can use $');
}

i'm using this function in google chrome console snippet

Scalable answered 11/3, 2021 at 9:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.