Incluir jQuery no console do JavaScript

772

Existe uma maneira fácil de incluir o jQuery no console JavaScript do Chrome para sites que não o usam? Por exemplo, em um site, eu gostaria de obter o número de linhas em uma tabela. Eu sei que isso é realmente fácil com o jQuery.

$('element').length;

O site não usa jQuery. Posso adicioná-lo na linha de comando?

Mrtsherman
fonte
3
Para uma abordagem mais automatizada, você pode usar um script de usuário para incluí-lo. Sério, isso seria como um usuário de 5 linhas: P
rlemon
9
document.getElementById('tableID').rows.length. Se a tabela não tiver um ID, use o editor DOM para atribuir um. Você não precisa do jQuery para algo tão absurdamente trivial.
Niet the Dark Absol # 23/13
Há uma extensão do Chrome para fazer isso - chrome.google.com/webstore/detail/script-injector/...
Abhishek Saha
1
adicione-o a uma tag de script, a partir do cdn ou localmente. CDN é muito mais simples.
Donato
1
Acredito que a maioria das ferramentas de desenvolvimento dos principais navegadores agora inclui jQuery (e algumas outras bibliotecas populares como Underscore) por padrão, mas não consigo encontrar a documentação. Pop abrir o console que geralmente funciona (tm). ------ Além disso, essa abordagem (agora) há muito tempo foi incorporada a um bookmarklet útil por várias pessoas. Eu usei este com sucesso: learningjquery.com/2009/04/… .
Brichins

Respostas:

1377

Execute isso no console JavaScript do navegador e o jQuery deve estar disponível ...

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 o site tiver scripts que conflitam com o jQuery (outras bibliotecas, etc.), você ainda poderá ter problemas.

Atualizar:

Para melhorar, a criação de um Marcador o torna realmente conveniente, vamos fazê-lo, e um pequeno feedback também é ótimo:

  1. Clique com o botão direito do mouse na barra de favoritos e clique em Adicionar página
  2. Nomeie como quiser, por exemplo, Injete jQuery e use a seguinte linha para URL:

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

Abaixo está o código formatado:

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

Aqui é usada a URL oficial da CDN do jQuery, fique à vontade para usar sua própria versão / CDN.

jondavidjohn
fonte
180
Este trecho não funcionou para mim. Não teve tempo para descobrir o porquê. Apenas copiei o conteúdo do arquivo code.jquery.com/jquery-latest.min.js e colei no console. Funciona perfeito.
Ruslanas Balčiūnas
9
Agora eu só preciso de uma tecla de atalho do console chrome para isso ^^. Eu continuo usando esse trecho e navegando de volta para cá para obtê-lo.
Cris Stringfellow
6
@CrisStringfellow - AKAIK: há um recurso de snippets de desenvolvedor em andamento, verifique o seu chrome:flagse veja se ele está lá, você precisará ativá-lo.
ocodo 5/03
2
@ Slomojo Estou gostando do seu senso de humor. Esperemos que os senhores da região estejam ouvindo, para que possam pressionar o canal b-tree de DIY. Também gosto particularmente de como todas as experiências são categorizadas de maneira tão útil. Eu acho que eles classificados em valor de hash.
precisa
2
Eu tive um problema com este shippet, mas a aqui stackoverflow.com/a/8225200/497208 funcionou para mim
Jakub M.
227

Execute isso no seu console

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

Ele cria uma nova tag de script, a preenche com jQuery e anexa à cabeça.

gênese
fonte
Isso funcionou perfeitamente, obrigado! (Para o registro, eu estava ficando "Uncaught TypeError: $ não é uma função", e depois de executar isso, eu era capaz de utilizar e funções da cadeia $ -selector normalmente.)
Ayelis
5
Se você receber uma mensagem de segurança (no Facebook, por exemplo), basta copiar / colar o conteúdo do jquery.js no console javascript.
Thomas Decaux
1
Funciona perfeitamente @genesis! 2017, navegador MS Edge.
Eric Hepperle - CodeSlayer2010
Isso funciona perfeitamente e é um salva-vidas! Muito mais simples e direto do que outras sugestões.
Erica Summers
85

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

E cole-o no console. Funciona perfeitamente.

Ruslanas Balčiūnas
fonte
12
Funciona como um encanto! E não adiciona script ao DOM, o que às vezes não é possível devido à 'Diretiva de política de segurança de conteúdo'. Tentei a resposta aceita, que resultou em: Recusou carregar o script ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' porque viola a seguinte diretiva de política de segurança de conteúdo: "script-src .. ..
Kangur 02/02
1
Primeiro verifique se existe uma variável $. Se não é o jQuery, provavelmente o jQuery deve soltar o $ var. Depois de chamar o script acima, digite: $ .noConflict ()
Kangur 02/02
Tentei usar várias respostas de três linhas. Nenhuma delas me permitiria usar jQueryou $. Somente essa solução funcionou. E então, como não estou usando muito o console de log hoje em dia - está sempre no meu histórico de comandos, portanto, após a primeira vez que copiei o conteúdo - agora, basta pressionar a seta para cima e entrar. Muito legal - obrigado
Gene Bo
resposta suave.! estava procurando o seu principal comentário como resposta! ótimo.
IRF
Web 3.0 está linda como sempre.
undercat aplaude Monica
63

Use o livreto jQueryify:

http://marklets.com/jQuerify.aspx

Em vez de copiar e colar o código nas outras respostas, isso o tornará um marcador clicável.

meder omuraliev
fonte
4
também pode copiar as outras respostas em um bookmarklet ..... apenas codifique o URL e adicione javascript:antes dele.
precisa
O que há com a chamada jQuery que modifica um elemento td? Isso parece um pouco aleatório e / ou perigoso. "td.editselectoption [value = BN]" ...
Kimball Robinson
O Facebook diz: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

Adicionando à resposta de @ jondavidjohn, também podemos defini-lo como um marcador com URL como código javascript.

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

e adicione-o à barra de ferramentas do Chrome ou Firefox para que, em vez de colar o script repetidamente, possamos clicar no bookmarklet.

Captura de tela do marcador

manish_s
fonte
2
2 melhorias: 1) leva tempo para o script ser carregado, portanto o if (jQuery) ... quase sempre falha. Sugiro adicionar um setTimeout para atrasar a carga; 2) não use o jquery-latest, ele não é realmente o mais recente e seu uso está obsoleto (veja este blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone
O jQuery.noConflict();fez parecer não funcionar em um site aleatório no qual eu estava testando isso. Acontece que eles já tinham jQuery, mas o jQuery não tem o$ atalho por algum motivo. Captura de tela: prntscr.com/bdcpdh .
Rani Kheir
22

Eu sou rebelde.

Solução: não use jQuery. O jQuery é uma biblioteca para abstrair as inconcistências do DOM nos navegadores. Como você está no seu próprio console, não precisa desse tipo de abstração.

Para o seu exemplo:

$$('element').length

( $$é um alias para document.querySelectorAllno console.)

Para qualquer outro exemplo: tenho certeza de que posso encontrar qualquer coisa. Especialmente se você estiver usando um navegador moderno (Chrome, FF, Safari, Opera).

Além disso, saber como o DOM funciona não faria mal a ninguém, apenas aumentaria o seu nível de jQuery (sim, aprender mais sobre javascript melhora o jQuery).

Florian Margaine
fonte
4
Obrigado pela ideia Florian. Concordo que quem usa o jQuery também deve saber javascript. Carregar o jQuery economiza muito tempo, não apenas porque abstrai as inconsistências do DOM. Seu mecanismo seletor,, sizzleé muito mais poderoso do que qualquer uma das chamadas javascript nativas. Consultar algo como $('div.className').children().hasClass('active').filter( function(index) { ... });seria um pesadelo em js simples.
mrtsherman
7
Você quer dizer document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine
6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...mas sim, o ponto é o seguinte: se você tem um navegador moderno, o domínio é indolor, mesmo sem o jQuery. :)
Esailija
5
Você não é um rebelde, ao que parece, em vez disso, que você gosta de perder tempo digitando mais :)
Anderson Fortaleza
1
@DavidWest :1não é um pseudo-seletor. Talvez você queira :first-child?
Florian Margaine
12

Acabei de criar um bookmarklet do jQuery 3.2.1 com tratamento de erros (carregue apenas se ainda não estiver carregado, detecte a versão se já estiver carregada, mensagem de erro se houver erro durante o carregamento). Testado no Chrome 27. Não há razão para usar o jQuery 1.9.1 "antigo" no navegador Chrome, pois o jQuery 2.0 é compatível com a API do 1.9 .

Basta executar o seguinte no console do desenvolvedor do Chrome ou arrastar e soltar na barra de favoritos :

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

O código-fonte legível está disponível aqui

fnkr
fonte
Isso funciona bem, embora o URL para o arquivo .js precise ser atualizado.
dsomnus
Talvez o site em que você está tentando usar isso envie um cabeçalho personalizado da Política de segurança de conteúdo.
fnkr
8

A resposta principal, de jondavidjohn, é boa, mas eu gostaria de ajustá-la para abordar alguns pontos:

  • Vários navegadores emitem um aviso ao carregar um script de httppara uma página nahttps .
  • Apenas alterando jquery.como protocolo parahttps um aviso se você tentar diretamente na barra de URL do navegador:This is probably not the site you are looking for!
  • Gosto de usar o CDN do Google quando estou usando o console para experimentar sites do Google, como o Gmail.

Meu único problema é que tenho que incluir um número de versão em que no console eu realmente sempre quero o mais recente.

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
fonte
1
Recusou-se a carregar o script ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' porque viola a seguinte diretiva de política de segurança de conteúdo: "script-src 'self' 'unsafe-inline' 'inseguro-avaliação' ". Observe que 'script-src-elem' não foi definido explicitamente; portanto, 'script-src' é usado como um fallback.
Dimmduh
7

Por esta resposta :

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

Por alguma razão, tenho que executá-lo duas vezes para obter o novo '$' (que também tenho a ver com os outros métodos), mas funciona.

Isso é equivalente se o seu navegador não for tão moderno:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
vt5491
fonte
Talvez porque seja executado de forma assíncrona, é assim que as chamadas e promessas de JS funcionam. Então, para ter certeza de que o script é executado, você tem que executar o seu próprio código dentro do callback 'então' da promessa buscar: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Espero que isso ajude você.
Maciej Bukowski
Isso não funcionou para mim. Mas ter dois evals no último bloco fez trabalho fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Esta é uma melhoria definitiva do que fazer duas vezes.
precisa saber é o seguinte
impressionante para casos em que você tem problemas com a política de conteúdo
Alexey Sh.
5

É muito fácil fazer isso manualmente, como as outras respostas explicam. Mas há também o plug-in jQuerify .

Ken Redler
fonte
+1 - Obrigado Ken. A palavra jQuerify me lembrou que eu criei um bookmarklet para fazer isso. Eu adicionei minha própria resposta que tinha o código que eu usei. Eu sabia que tinha feito isso antes =).
mrtsherman
2
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
adamb
@adamb, infelizmente, junto com a tendência de antigos vínculos à deterioração, meu tempo e motivação para melhorar algumas dessas respostas muito antigas se dissiparam concomitantemente ao longo dos anos. Graças ao design do SO, no entanto, você é mais que bem-vindo para melhorar a resposta - uma contribuição para a luta contra a entropia que é sempre apreciada com todo o coração.
precisa saber é o seguinte
5

FWIW, o Firebug incorpora o includecomando especial e o jquery é alternativo por padrão: https://getfirebug.com/wiki/index.php/Include

Portanto, no seu caso, você apenas precisa digitar:

include("jquery");

Florent

fflorent
fonte
Na verdade, é include("http://code.jquery.com/jquery-latest.min.js", "jquery")pela primeira vez. Se você apenas include("jquery");receber o erro Alias 'jquery' not found.. include("jquery");é para reutilizar a mesma biblioteca em uma guia / domínio diferente.
machineaddict
1
Desde o Firebug 1.11.4, que é por padrão (a menos que você tenha definido aliases antes desta versão): code.google.com/p/fbug/issues/detail?id=6133 (Observação: eu sou o autor desse recurso: ))
fflorent 26/03
Eu tenho o Firebug 1.12.8 e, se eu for, digamos, Google, enquanto estiver executando include("jquery")no console, esse erro me ocorre .
precisa
Hmm, você deve usar o Firebug 2.0.8, que é a versão oficial mais recente. Além disso, a razão pela qual include ("jquery") não funciona para você é definitivamente porque você criou um alias antes da versão 1.11.4, como mencionei. Apenas remova o includeAliases.jsonarquivo (que contém include()aliases) no seu perfil do firefox e isso deve funcionar.
fflorent
3

esta resposta com base na resposta @genesis, primeiro tentei a versão do marcador @jondavidjohn e ela não está funcionando, por isso mudei para isso (adicione-a ao seu 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')}());

Por precaução, não é testado no chrome, mas funciona no firefox e não é testado em ambiente de conflito.

whale_steward
fonte
2

Uma das maneiras mais curtas seria copiar e colar o código abaixo no 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
fonte
1

Se você deseja fazer isso para um script de usuário, escrevi: http://userscripts.org/scripts/show/123588

Permite incluir o jQuery, além da interface do usuário e quaisquer plugins que você desejar. Estou usando-o em um site que possui 1.5.1 e sem interface do usuário; esse script me fornece 1.7.1, mais a interface do usuário e nenhum conflito no Chrome ou no FF. Eu mesmo não testei o Opera, mas outros me disseram que funcionou lá para eles também; portanto, essa deve ser uma solução completa para os usuários do navegador, se é para isso que você precisa fazer isso.

BrianFreud
fonte
1

Aqui está o 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 pode ser colado diretamente no console ou criar uma nova página de favoritos (no Chrome, clique com o botão direito do mouse na barra de favoritos , Adicionar página ... ) e cole esse código como URL.

Para testar se isso funcionou, veja abaixo.

Antes:

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

Depois de:

$()
[]
kenorb
fonte
1

Se você deseja usar o jQuery com freqüência no console, pode escrever facilmente um script do usuário. Primeiro, instale o Tampermonkey se você estiver no Chrome e o Greasemonkey se estiver no Firefox. Escreva um script de usuário simples com uma função 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;
    }
}
Asif Mallik
fonte
1

Solução chave na mão:

Coloque seu código em yourCode_herefunção. E evite o HTML sem a marca 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
fonte
1

Navegadores modernos (testados no Chrome, Firefox, Safari) implementam algumas funções auxiliares usando o cifrão $muito semelhante ao jQuery (se o site não definir algo usando window.$).

Esses utilitários são bastante úteis para selecionar elementos no DOM e modificá-los.

Documentos: Chrome , Firefox

Zanon
fonte