Incluir jQuery en la consola de JavaScript


772

¿Hay una manera fácil de incluir jQuery en la consola de JavaScript de Chrome para sitios que no lo usan? Por ejemplo, en un sitio web me gustaría obtener el número de filas en una tabla. Sé que esto es realmente fácil con jQuery.

$('element').length;

El sitio no usa jQuery. ¿Puedo agregarlo desde la línea de comando?


3
Para obtener un enfoque más automatizado, puede usar un script de usuario para incluirlo. En serio, esto sería como un script de usuario de 5 líneas: P
rlemon

99
document.getElementById('tableID').rows.length. Si la tabla no tiene una ID, use el editor DOM para asignarle una. No necesitas jQuery para algo tan absurdamente trivial.
Niet the Dark Absol

Hay una extensión de Chrome para hacer esto: chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha

1
agréguelo a una etiqueta de script, ya sea desde cdn o localmente. CDN es mucho más simple.
Donato

1
Creo que la mayoría de las herramientas de desarrollo de los principales navegadores ahora incluyen jQuery (y algunas otras bibliotecas populares como Underscore) de forma predeterminada, pero no puedo encontrar la documentación. Pop abre la consola, generalmente solo funciona (tm). ------ Además, este enfoque (hace mucho tiempo) ha sido incorporado desde hace mucho tiempo en un práctico marcador por varias personas. He usado este con éxito: learningjquery.com/2009/04/… .
brichins

Respuestas:


1377

Ejecute esto en la consola de JavaScript de su navegador, entonces jQuery debería estar 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();

NOTA: si el sitio tiene scripts que entran en conflicto con jQuery (otras bibliotecas, etc.), aún podría tener problemas.

Actualizar:

Mejorar lo mejor, crear un marcador lo hace realmente conveniente, hagámoslo, y un pequeño comentario también es genial:

  1. Haga clic derecho en la barra de marcadores y haga clic en Agregar página
  2. Póngale el nombre que desee, por ejemplo, Inyecte jQuery y use la siguiente línea para 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')

A continuación se muestra el código formateado:

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

Aquí se usa la URL oficial de jQuery CDN, siéntase libre de usar su propia CDN / versión.


180
Este fragmento no funcionó para mí. No tuve tiempo de averiguar por qué. Simplemente copié el contenido del archivo code.jquery.com/jquery-latest.min.js y lo pegué en la consola. Funciona perfecto
Ruslanas Balčiūnas

99
Ahora solo necesito una tecla de acceso rápido de la consola de Chrome para esto ^^. SIGO usando este fragmento y navegando de regreso aquí para obtenerlo.
Cris Stringfellow

66
@CrisStringfellow - AKAIK hay una característica de fragmentos de desarrollador en proceso, verifique su chrome:flagsy verifique si está allí, deberá encenderlo.
ocodo

2
@Slomojo Estoy disfrutando tu sentido del humor. Con suerte, los señores superiores están escuchando, para que puedan impulsar ese canal de bricolaje b-tree. También me gusta particularmente cómo todos los experimentos se clasifican de manera tan útil. Creo que clasificaron por valor hash.
Cris Stringfellow

2
Tuve un problema con este shippet, pero el que está aquí stackoverflow.com/a/8225200/497208 funcionó para mí
Jakub M.

227

Ejecuta esto en tu consola

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

Crea una nueva etiqueta de script, la llena con jQuery y se agrega a la cabeza.


Esto funcionó perfectamente, gracias! (Para el registro, estaba obteniendo "TypeError no capturado: $ no es una función", y después de ejecutar esto, pude utilizar y encadenar las funciones $ -selector normalmente).
Ayelis

55
Si recibe un mensaje de seguridad (en Facebook, por ejemplo), simplemente copie / pegue el contenido de jquery.js en la consola javascript.
Thomas Decaux

1
Funciona perfectamente @genesis! 2017, navegador MS Edge.
Eric Hepperle - CodeSlayer2010

¡Esto funciona perfectamente y es un salvavidas! Mucho más simple y directo que otras sugerencias.
Erica Summers

85

Copie todo de:
https://code.jquery.com/jquery-3.4.1.min.js

Y pégalo en la consola. Funciona perfectamente.


12
¡Funciona de maravilla! Y no agrega script a DOM, que a veces no es posible debido a la 'Directiva de Política de Seguridad de Contenido'. He intentado una respuesta aceptada que resultó en: Me negué a cargar el script ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' porque viola la siguiente directiva de Política de seguridad de contenido: "script-src .. ..
Kangur

1
Primero verifique si hay una variable $. Si no es jQuery, uno probablemente debería soltar jQuery hold en $ var. Después de invocar el tipo de script anterior: $ .noConflict ()
Kangur

Traté de usar una variedad de respuestas de 3 líneas ... ninguna de ellas me permitió usar jQueryo $. Solo esta solución funcionó. Y luego, dado que no estoy usando la consola de registro de otra manera en estos días, siempre está en mi historial de comandos, por lo que después de la primera vez que copié el contenido, ahora solo necesito presionar la flecha hacia arriba y luego ingresar. Muy bien - gracias
Gene Bo

respuesta suave. estaba buscando tu comentario principal como respuesta! estupendo.
Irf

La Web 3.0 se ve hermosa como siempre.
Undercat aplaude a Monica

63

Use el folleto jQueryify:

http://marklets.com/jQuerify.aspx

En lugar de copiar y pegar el código en las otras respuestas, esto lo convertirá en un marcador en el que se puede hacer clic.


44
puede copiar las otras respuestas en un bookmarklet también ... simplemente codifique url y agregue javascript:antes.
d -_- b

¿Qué pasa con la llamada jQuery que modifica un elemento td? Eso parece un poco aleatorio y / o peligroso. "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

Agregando a la respuesta de @ jondavidjohn, también podemos configurarlo como un marcador con URL como código de JavaScript.

Nombre: Incluir 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);

y luego agregarlo a la barra de herramientas de Chrome o Firefox para que, en lugar de pegar el script una y otra vez, podamos hacer clic en el marcador.

Captura de pantalla del marcador


2
2 mejoras: 1) lleva tiempo cargar el script, por lo que el if (jQuery) ... casi siempre fallará. Sugiero agregar un setTimeout para retrasar la carga; 2) no uses jquery-latest, no es realmente el último y su uso está en desuso (mira este blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone

Lo jQuery.noConflict();hizo parecer que no funcionaba en un sitio aleatorio en el que estaba probando esto. Resultó que ya tenían jQuery, pero su jQuery no tiene el $acceso directo por alguna razón. Captura de pantalla: prntscr.com/bdcpdh .
Rani Kheir

22

Soy un rebelde.

Solución: no use jQuery. jQuery es una biblioteca para abstraer las inconsistencias DOM en los navegadores. Como estás en tu propia consola, no necesitas este tipo de abstracción.

Por su ejemplo:

$$('element').length

( $$es un alias para document.querySelectorAllen la consola).

Para cualquier otro ejemplo: estoy seguro de que puedo encontrar cualquier cosa. Especialmente si está utilizando un navegador moderno (Chrome, FF, Safari, Opera).

Además, saber cómo funciona el DOM no dañaría a nadie, solo aumentaría tu nivel de jQuery (sí, aprender más sobre JavaScript te hace mejor en jQuery).


44
Gracias por la idea Florian. Estoy de acuerdo en que cualquiera que use jQuery también debe saber javascript. Cargar jQuery es un gran ahorro de tiempo no solo porque abstrae inconsistencias DOM. Su motor de selección sizzlees mucho más potente que cualquiera de las llamadas nativas de JavaScript. Consultar por algo así $('div.className').children().hasClass('active').filter( function(index) { ... });sería una pesadilla en JS.
mrtsherman

77
Qué quiere decir document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine

66
@FlorianMargaine, [].slice.call( document.querySelectorAll('div.className .active') ).filter...pero sí, el punto se destaca: si tienes un navegador moderno, dom es indoloro incluso sin jQuery. :)
Esailija

55
No eres un rebelde, parece que prefieres perder el tiempo escribiendo más :)
Anderson Fortaleza

1
@DavidWest :1no es un pseudo selector. Tal vez quieres :first-child?
Florian Margaine

12

Acabo de hacer un jQuery 3.2.1 bookmarklet con manejo de errores (solo carga si aún no está cargado, detecta la versión si ya está cargada, mensaje de error si error al cargar). Probado en Chrome 27. No hay ninguna razón para usar el jQuery 1.9.1 "antiguo" en el navegador Chrome ya que jQuery 2.0 es compatible con API con 1.9 .

Simplemente ejecute lo siguiente en la consola de desarrollador de Chrome o arrástrelo y suéltelo en su barra de marcadores :

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

El código fuente legible está disponible aquí


Esto funciona bien aunque la url para el archivo .js tiene que actualizarse.
dsomnus

Tal vez el sitio web en el que está tratando de usar esto envía un encabezado de Política de seguridad de contenido personalizado.
fnkr

8

La respuesta principal, de jondavidjohn, es buena, pero me gustaría modificarla para abordar un par de puntos:

  • Varios navegadores emiten una advertencia al cargar un script desde httpuna página en https.
  • Simplemente cambiando jquery.comel protocolo a httpsresultados en una advertencia si lo prueba directamente desde la barra de URL del navegador:This is probably not the site you are looking for!
  • Me gusta usar el CDN de Google cuando estoy usando la consola para experimentar con sitios de Google como Gmail.

Mi único problema es que tengo que incluir un número de versión donde en la consola realmente siempre quiero la última.

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
Se negó a cargar el script ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' porque viola la siguiente directiva de Política de Seguridad de Contenido: "script-src 'self' 'unsafe-inline' 'inseguro-eval' ". Tenga en cuenta que 'script-src-elem' no se configuró explícitamente, por lo que 'script-src' se usa como alternativa.
Dimmduh

7

Por esta respuesta :

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

Por alguna razón, tengo que ejecutarlo dos veces para obtener el nuevo '$' (que también tengo que ver con los otros métodos), pero funciona.

Este es el equivalente si su navegador no es tan moderno:

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

Tal vez porque se ejecuta de forma asíncrona, así es como funcionan las devoluciones de llamada y las promesas de JS. Así que para estar seguro de que se ejecute la escritura, lo que tiene que ejecutar su propio código dentro de la devolución de llamada 'y luego' de la promesa tomará: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Espero que esto te ayude.
Maciej Bukowski

Eso no me funcionó. Pero tener dos evals en el último bloque hizo el trabajo fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Esta es una mejora definitiva sobre tener que hacerlo dos veces.
vt5491

increíble para casos en los que tienes problemas con la política de contenido
Alexey Sh.

5

Es bastante fácil hacer esto manualmente, como explican las otras respuestas. Pero también está el complemento jQuerify .


+1 - Gracias Ken. La palabra jQuerify me recordó que creé un bookmarklet para hacer esto. Agregué mi propia respuesta que tenía el código que usé. Sabía que había hecho esto antes =).
mrtsherman

2
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
adamb

@adamb, desafortunadamente, junto con la tendencia de los viejos enlaces a la descomposición, mi tiempo y motivación para mejorar algunas de estas respuestas muy antiguas se ha disipado con el paso de los años. Sin embargo, gracias al diseño de SO, es más que bienvenido a mejorar la respuesta usted mismo, una contribución a la lucha contra la entropía que siempre se agradece sinceramente.
Ken Redler

5

FWIW, Firebug incorpora el includecomando especial, y jquery tiene un alias por defecto: https://getfirebug.com/wiki/index.php/Include

Entonces, en su caso, solo tiene que escribir:

include("jquery");

Florent


En realidad es include("http://code.jquery.com/jquery-latest.min.js", "jquery")por primera vez. Si solo include("jquery");obtienes el error Alias 'jquery' not found.. include("jquery");es para reutilizar la misma biblioteca en una pestaña / dominio diferente.
machineaddict

1
No desde Firebug 1.11.4, que es por defecto (a menos que haya definido alias antes de esta versión): code.google.com/p/fbug/issues/detail?id=6133 (Nota: Soy el autor de esta función: ))
fflorent

Tengo Firebug 1.12.8 y si voy, digamos Google, mientras se ejecuta include("jquery")en la consola me da ese error.
machineaddict

Hmm, deberías usar Firebug 2.0.8, que es la última versión oficial. Además, la razón por la cual include ("jquery") no funciona para usted es definitivamente porque había creado un alias antes de la versión 1.11.4 como mencioné. Simplemente elimine el includeAliases.jsonarchivo (que contiene include()alias) en su perfil de Firefox y eso debería funcionar.
fflorent

3

esta respuesta basada en @genesis answer, al principio probé la versión de marcador @jondavidjohn, y no funciona, así que la cambio a esta (agréguela a su marcador):

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

palabras de precaución, no se prueba en Chrome pero funciona en Firefox, y no se prueba en entornos de conflicto.


2

Una de las formas más cortas sería simplemente copiar y pegar el siguiente código en la consola.

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

Si está buscando hacer esto para un script de usuario, escribí esto: http://userscripts.org/scripts/show/123588

Le permitirá incluir jQuery, además de la interfaz de usuario y los complementos que desee. Lo estoy usando en un sitio que tiene 1.5.1 y no tiene interfaz de usuario; este script me da 1.7.1 en su lugar, más UI, y no hay conflictos en Chrome o FF. No he probado Opera yo mismo, pero otros me han dicho que también ha funcionado allí para ellos, por lo que esta debería ser una solución completa de script de usuario cruzado, si eso es lo que necesita hacer.


1

Aquí hay un código 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);})();

que se puede pegar directamente en la consola o crear una nueva página de marcadores (en Chrome, haga clic con el botón derecho en la barra de marcadores , Agregar página ... ) y pegue este código como URL.

Para probar si eso funcionó, ver más abajo.

Antes de:

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

Después:

$()
[]

1

Si desea utilizar jQuery con frecuencia desde la consola, puede escribir fácilmente un script de usuario. Primero, instale Tampermonkey si está en Chrome y Greasemonkey si está en Firefox. Escriba un simple script de usuario con una función de uso como esta:

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

Solución llave en mano:

Pon tu código en yourCode_herefunción. Y evite HTML sin etiqueta 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

Los navegadores modernos (probados en Chrome, Firefox, Safari) implementan algunas funciones auxiliares usando el signo de dólar $que son muy similares a jQuery (si el sitio web no define algo usandowindow.$ ).

Esas utilidades son bastante útiles para seleccionar elementos en el DOM y modificarlos.

Documentos: Chrome , Firefox


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.