Sertakan jQuery di Konsol JavaScript

772

Apakah ada cara mudah untuk memasukkan jQuery di konsol JavaScript Chrome untuk situs yang tidak menggunakannya? Misalnya, di situs web saya ingin mendapatkan jumlah baris dalam sebuah tabel. Saya tahu ini sangat mudah dengan jQuery.

$('element').length;

Situs ini tidak menggunakan jQuery. Bisakah saya menambahkannya dari baris perintah?

mrtsherman
sumber
3
Untuk lebih banyak pendekatan otomatis Anda dapat menggunakan skrip pengguna untuk memasukkannya. Serius ini akan seperti script pengguna 5 baris: P
rlemon
9
document.getElementById('tableID').rows.length. Jika tabel tidak memiliki ID, gunakan editor DOM untuk memberikannya. Anda tidak perlu jQuery untuk sesuatu yang sangat sepele.
Niet the Dark Absol
Ada ekstensi chrome untuk melakukan ini - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha
1
tambahkan ke tag skrip, baik dari cdn atau lokal. CDN jauh lebih sederhana.
Donato
1
Saya percaya sebagian besar Dev Tools browser utama sekarang termasuk jQuery (dan beberapa perpustakaan populer lainnya seperti Underscore) secara default, tetapi saya tidak dapat menemukan dokumentasi itu. Pop membuka konsol itu biasanya Just Works (tm). ------ Juga, pendekatan ini telah (sekarang) sudah sejak lama dibangun menjadi bookmarklet yang berguna oleh beberapa orang. Saya telah menggunakan ini dengan sukses: learningjquery.com/2009/04/… .
brichins

Jawaban:

1377

Jalankan ini di konsol JavaScript browser Anda, maka jQuery harus tersedia ...

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

CATATAN: jika situs memiliki skrip yang bertentangan dengan jQuery (libs lain, dll.) Anda masih dapat mengalami masalah.

Memperbarui:

Membuat yang terbaik, membuat Bookmark membuatnya sangat nyaman, mari kita lakukan, dan sedikit umpan balik juga bagus:

  1. Klik kanan Bilah Bookmark, dan klik Tambah Halaman
  2. Beri nama sesuai keinginan Anda, mis. Suntikkan jQuery, dan gunakan baris berikut untuk 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 bawah ini adalah kode yang diformat:

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 sini URL CDN jQuery resmi digunakan, jangan ragu untuk menggunakan CDN / versi Anda sendiri.

jondavidjohn
sumber
180
Cuplikan ini tidak berfungsi untuk saya. Tidak punya waktu untuk mencari tahu mengapa. Hanya menyalin konten file code.jquery.com/jquery-latest.min.js dan disisipkan ke konsol. Bekerja dengan sempurna.
Ruslanas Balčiūnas
9
Sekarang saya hanya perlu tombol pintas konsol chrome untuk ini ^^. AKU TETAP menggunakan cuplikan ini, dan berselancar kembali ke sini untuk mendapatkannya.
Cris Stringfellow
6
@CrisStringfellow - AKAIK ada fitur cuplikan pengembang dalam karya, periksa chrome:flagsdan lihat apakah ada di sana, Anda harus mengaktifkannya.
ocodo
2
@Slomojo Saya menikmati selera humor Anda. Semoga tuan mendengarkan, sehingga mereka bisa mendorong saluran DIY b-tree. Saya juga sangat suka bagaimana semua eksperimen dikategorikan sangat bermanfaat. Saya pikir mereka diurutkan berdasarkan nilai hash.
Cris Stringfellow
2
Saya punya masalah dengan shippet ini, tetapi yang ada di sini stackoverflow.com/a/8225200/497208 bekerja untuk saya
Jakub M.
227

Jalankan ini di konsol Anda

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

Itu membuat tag skrip baru, mengisinya dengan jQuery dan menambahkan ke kepala.

asal
sumber
Ini bekerja dengan sempurna, terima kasih! (Sebagai catatan, saya mendapatkan "Uncaught TypeError: $ bukan fungsi", dan setelah menjalankan ini, saya dapat menggunakan dan mem-chain fungsi-fungsi pemilih-$ secara normal.)
Ayelis
5
Jika Anda mendapatkan pesan keamanan (misalnya di Facebook), cukup salin / tempel konten jquery.js di konsol javascript.
Thomas Decaux
1
Bekerja dengan sempurna @ genesis! 2017, browser MS Edge.
Eric Hepperle - CodeSlayer2010
Ini bekerja dengan sempurna dan merupakan penyelamat! Jauh lebih sederhana dan langsung daripada saran lainnya.
Erica Summers
85

Salin semuanya dari:
https://code.jquery.com/jquery-3.4.1.min.js

Dan rekatkan ke konsol. Bekerja dengan sempurna.

Ruslanas Balčiūnas
sumber
12
Bekerja seperti pesona! Dan itu tidak menambahkan skrip ke DOM yang kadang-kadang tidak mungkin karena 'Arahan Kebijakan Keamanan Konten'. Saya sudah mencoba menerima jawaban yang mengakibatkan: Menolak memuat skrip ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' karena melanggar arahan Kebijakan Keamanan Konten berikut: "script-src .. ..
Kangur
1
Pertama periksa apakah ada variabel $. Jika bukan jQuery, orang mungkin harus melepaskan jQuery di $ var. Setelah memohon jenis skrip di atas: $ .noConflict ()
Kangur
Saya mencoba menggunakan berbagai jawaban 3-baris .. tidak satupun dari mereka akan mengizinkan saya untuk menggunakan jQueryatau $. Hanya solusi ini yang berhasil. Dan karena saya tidak menggunakan konsol log sebaliknya terlalu banyak hari ini - itu selalu dalam sejarah perintah saya, jadi setelah pertama kali saya menyalin konten - sekarang, hanya perlu menekan panah atas dan kemudian masuk. Sangat keren - terima kasih
Gene Bo
jawaban yang halus.! sedang mencari komentar utama Anda sebagai jawaban! Bagus.
Irf
Web 3.0 terlihat cantik seperti biasa.
Undercat memuji Monica
63

Gunakan buklet jQueryify:

http://marklets.com/jQuerify.aspx

Alih-alih menyalin kode di jawaban lain, ini akan membuatnya menjadi bookmark yang dapat diklik.

meder omuraliev
sumber
4
dapat menyalin jawaban lain ke bookmarklet juga ..... cukup url enkode dan tambahkan javascript:sebelumnya.
d -_- b
Ada apa dengan panggilan jQuery yang mengubah elemen td? Tampaknya agak acak dan / atau berbahaya. "td.editselectoption [value = BN]" ...
Kimball Robinson
Facebook mengatakan: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

Menambahkan ke jawaban @ jondavidjohn, kita juga dapat mengaturnya sebagai bookmark dengan URL sebagai kode javascript.

Nama: Sertakan 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);

dan kemudian menambahkannya ke bilah alat Chrome atau Firefox sehingga alih-alih menempelkan skrip berulang-ulang, kita cukup mengklik bookmarklet.

Cuplikan layar bookmark

manish_s
sumber
2
2 penyempurnaan: 1) skrip butuh waktu untuk dimuat, sehingga if (jQuery) ... hampir selalu gagal. Saya menyarankan untuk menambahkan setTimeout untuk menunda beban; 2) jangan gunakan jquery terbaru, ini bukan yang terbaru dan penggunaannya sudah usang (lihat blog ini.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Giuseppe Bertone
The jQuery.noConflict();membuatnya tampak tidak bekerja pada sebuah situs acak saya sedang menguji ini pada. Ternyata mereka sudah memiliki jQuery, tetapi jQuery mereka tidak memiliki jalan $pintas karena suatu alasan. Tangkapan layar: prntscr.com/bdcpdh .
Rani Kheir
22

Saya seorang pemberontak.

Solusi: jangan gunakan jQuery. jQuery adalah pustaka untuk abstrak inkonsistensi DOM di seluruh browser. Karena Anda berada di konsol Anda sendiri, Anda tidak perlu abstraksi semacam ini.

Sebagai contoh Anda:

$$('element').length

( $$adalah alias untuk document.querySelectorAlldi konsol.)

Untuk contoh lain: Saya yakin saya dapat menemukan apa pun. Terutama jika Anda menggunakan browser modern (Chrome, FF, Safari, Opera).

Selain itu, mengetahui cara kerja DOM tidak akan menyakiti siapa pun, itu hanya akan meningkatkan level jQuery Anda (ya, mempelajari lebih lanjut tentang javascript membuat Anda lebih baik di jQuery).

Florian Margaine
sumber
4
Terima kasih atas idenya Florian. Saya setuju bahwa siapa pun yang menggunakan jQuery juga harus tahu javascript. Memuat jQuery adalah penghemat waktu yang besar bukan hanya karena abstrak abstraksi DOM. Mesin pemilihnya,, sizzlejauh lebih kuat daripada panggilan javascript asli mana pun. Meminta sesuatu seperti $('div.className').children().hasClass('active').filter( function(index) { ... });akan menjadi mimpi buruk di js.
mrtsherman
7
Apakah yang Anda maksud document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine
6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...tapi ya intinya: jika Anda memiliki dom browser modern tidak menyakitkan bahkan tanpa jQuery. :)
Esailija
5
Anda bukan seorang pemberontak, tampaknya, sebaliknya, bahwa Anda suka membuang waktu untuk mengetik lebih banyak :)
Anderson Fortaleza
1
@ Davidvidest :1bukan pemilih palsu. Mungkin kamu mau :first-child?
Florian Margaine
12

Saya baru saja membuat bookmarklet jQuery 3.2.1 dengan penanganan kesalahan (hanya memuat jika belum dimuat, mendeteksi versi jika sudah dimuat, pesan kesalahan jika kesalahan saat memuat). Diuji di Chrome 27. Tidak ada alasan untuk menggunakan jQuery 1.9.1 "lama" di browser Chrome karena jQuery 2.0 kompatibel dengan API .

Jalankan saja yang berikut di konsol pengembang Chrome atau seret & letakkan di bilah bookmark Anda :

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

Kode sumber yang dapat dibaca tersedia di sini

fnkr
sumber
Ini berfungsi dengan baik meskipun url untuk file .js harus diperbarui.
dsomnus
Mungkin situs web yang Anda coba gunakan ini mengirimkan header Kebijakan-Konten-Keamanan-kebijakan khusus.
fnkr
8

The top jawaban, oleh jondavidjohn baik tetapi saya ingin men-tweak itu untuk mengatasi beberapa poin:

  • Berbagai browser mengeluarkan peringatan saat memuat skrip dari httpke halaman https.
  • Hanya mengubah jquery.comprotokol untuk httpsmenghasilkan peringatan jika Anda mencobanya langsung dari bilah URL browser:This is probably not the site you are looking for!
  • Saya suka menggunakan CDN Google ketika saya menggunakan konsol untuk bereksperimen dengan situs-situs Google seperti Gmail.

Satu-satunya masalah saya adalah bahwa saya harus memasukkan nomor versi di mana di konsol saya selalu ingin yang terbaru.

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
sumber
1
Menolak memuat skrip ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' karena melanggar arahan Kebijakan Keamanan Konten berikut: "script-src 'self' 'unsafe-inline' 'tidak aman - eval' ". Perhatikan bahwa 'script-src-elem' tidak diatur secara eksplisit, jadi 'script-src' digunakan sebagai fallback.
Dimmduh
7

Per jawaban ini :

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

Untuk beberapa alasan saya harus menjalankannya dua kali untuk mendapatkan '$' yang baru (yang harus saya lakukan dengan metode lain juga), tetapi itu berhasil.

Ini setara jika browser Anda tidak terlalu modern:

fetch('http://code.jquery.com/jquery-latest.min.js').then(function(r){return r.text()}).then(function(r){eval(r)})
vt5491
sumber
Mungkin karena ini berjalan secara tidak serempak, ini adalah cara kerja JS callback dan janji. Jadi untuk memastikan bahwa script dijalankan, Anda harus menjalankan kode Anda sendiri dalam 'kemudian' callback dari pengambilan janji: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Semoga ini bisa membantu Anda.
Maciej Bukowski
Itu tidak berhasil untuk saya. Tapi memiliki dua evals di blok terakhir melakukan pekerjaan fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Ini adalah peningkatan yang pasti karena harus melakukannya dua kali.
vt5491
luar biasa untuk kasus-kasus ketika Anda memiliki masalah dengan kebijakan konten
Alexey Sh.
5

Cukup mudah untuk melakukan ini secara manual, seperti yang dijelaskan oleh jawaban lainnya. Tetapi ada juga plug-in jQuerify .

Ken Redler
sumber
+1 - Terima kasih Ken. Kata jQuerify mengingatkan saya bahwa saya membuat bookmarklet untuk melakukan ini. Saya menambahkan jawaban saya sendiri yang memiliki kode yang saya gunakan. Saya tahu saya telah melakukan ini sebelumnya =).
mrtsherman
2
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
adamb
@Adamb, sayangnya, seiring dengan kecenderungan tautan lama yang membusuk, waktu dan motivasi saya untuk memperbaiki beberapa jawaban yang sangat lama ini secara bersamaan telah menghilang selama bertahun-tahun. Berkat desain SO, bagaimanapun, Anda lebih dari menyambut untuk meningkatkan jawaban Anda sendiri - sebuah kontribusi untuk perjuangan melawan entropi yang selalu dihargai dengan sepenuh hati.
Ken Redler
5

FWIW, Firebug menyematkan includeperintah khusus, dan jquery secara default alias: https://getfirebug.com/wiki/index.php/Include

Jadi dalam kasus Anda, Anda hanya perlu mengetik:

include("jquery");

Florent

fflorent
sumber
Sebenarnya ini include("http://code.jquery.com/jquery-latest.min.js", "jquery")untuk pertama kalinya digunakan. Jika Anda baru saja include("jquery");mendapatkan kesalahan Alias 'jquery' not found.. include("jquery");adalah untuk menggunakan kembali perpustakaan yang sama pada tab / domain yang berbeda.
machineaddict
1
Tidak sejak Firebug 1.11.4, yang secara default (kecuali Anda telah menentukan alias sebelum rilis ini): code.google.com/p/fbug/issues/detail?id=6133 (Catatan: Saya adalah penulis fitur ini: ))
fflorent
Saya memiliki Firebug 1.12.8 dan jika saya pergi ke, katakanlah Google, saat berjalan include("jquery")di konsol membuat saya kesalahan itu.
machineaddict
Hmm, Anda harus menggunakan Firebug 2.0.8, yang merupakan versi resmi terbaru. Juga alasan mengapa menyertakan ("jquery") tidak berfungsi untuk Anda adalah pasti karena Anda telah membuat alias sebelum versi 1.11.4 seperti yang saya sebutkan. Hapus saja includeAliases.jsonfile (yang berisi include()alias) di profil firefox Anda dan itu akan berfungsi.
fflorent
3

jawaban ini berdasarkan jawaban @ genesis, pada awalnya saya mencoba versi bookmark @ jondavidjohn, dan tidak berfungsi, jadi saya mengubahnya ke ini (tambahkan ke bookmark Anda):

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

kata hati-hati, tidak diuji dalam chrome tetapi bekerja di firefox, dan tidak diuji dalam lingkungan konflik.

whale_steward
sumber
2

Salah satu cara terpendek adalah menyalin kode yang disisipkan di bawah ini ke konsol.

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
sumber
1

Jika Anda ingin melakukan ini untuk skrip pengguna, saya menulis ini: http://userscripts.org/scripts/show/123588

Ini akan memungkinkan Anda memasukkan jQuery, plus UI dan plugin apa pun yang Anda inginkan. Saya menggunakannya di situs yang memiliki 1.5.1 dan tidak ada UI; skrip ini memberi saya 1.7.1 sebagai gantinya, ditambah UI, dan tidak ada konflik di Chrome atau FF. Saya sendiri belum menguji Opera, tetapi orang lain mengatakan kepada saya bahwa Opera juga berfungsi di sana untuk mereka, jadi ini seharusnya solusi yang cukup lengkap untuk pengguna lintas-browser, jika itu yang perlu Anda lakukan untuk ini.

BrianFreud
sumber
1

Berikut ini adalah kode 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);})();

yang dapat ditempelkan secara langsung di Konsol atau buat halaman Bookmark baru (di Chrome klik kanan pada Bookmark Bar , Add Page ... ) dan rekatkan kode ini sebagai URL.

Untuk menguji apakah itu berhasil, lihat di bawah.

Sebelum:

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

Setelah:

$()
[]
kenorb
sumber
1

Jika Anda ingin sering menggunakan jQuery dari konsol, Anda dapat dengan mudah menulis naskah pengguna. Pertama, instal Tampermonkey jika Anda menggunakan Chrome dan Greasemonkey jika Anda menggunakan Firefox. Tulis skrip pengguna sederhana dengan fungsi penggunaan seperti ini:

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
sumber
1

Solusi turnkey:

Masukkan kode Anda dalam yourCode_herefungsi. Dan cegah HTML tanpa 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>");
}

A-312
sumber
1

Browser modern (diuji pada Chrome, Firefox, Safari) menerapkan beberapa fungsi pembantu menggunakan tanda dolar $yang sangat mirip dengan jQuery (jika situs web tidak mendefinisikan sesuatu menggunakan window.$).

Utilitas tersebut cukup berguna untuk memilih elemen di DOM dan memodifikasinya.

Documents: Chrome , Firefox

Zanon
sumber