JavaScript Konsoluna jQuery'yi dahil et


772

JQuery'yi kullanmayan siteler için Chrome JavaScript konsoluna eklemenin kolay bir yolu var mı? Örneğin, bir web sitesinde bir tablodaki satır sayısını almak istiyorum. Bunun jQuery ile gerçekten kolay olduğunu biliyorum.

$('element').length;

Site jQuery kullanmaz. Komut satırından ekleyebilir miyim?


3
Daha otomatik bir yaklaşım için, bunu eklemek üzere bir kullanıcı metni kullanabilirsiniz. Ciddi bir 5 satır kullanıcısı gibi olurdu: P
rlemon

9
document.getElementById('tableID').rows.length. Tablonun bir kimliği yoksa, bunu vermek için DOM düzenleyicisini kullanın. Bu kadar saçma derecede önemsiz bir şey için jQuery'ye ihtiyacınız yok.
23:13

Bunu yapmak için bir krom uzantısı var - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha

1
cdn'den veya yerel olarak bir komut dosyası etiketine ekleyin. CDN çok daha basittir.
Donato

1
Büyük tarayıcıların Dev Araçları'nın çoğunun varsayılan olarak jQuery (ve Underscore gibi birkaç popüler kitaplık) içerdiğine inanıyorum, ancak bunun belgelerini bulamıyorum. Genellikle sadece Çalışır (tm) konsolu açın. ------ Ayrıca, bu yaklaşım uzun zamandır birkaç kişi tarafından kullanışlı bir yer imine yerleştirilmiştir. Bunu başarıyla kullandım: learningjquery.com/2009/04/… .
brichins

Yanıtlar:


1377

Bunu tarayıcınızın JavaScript konsolunda çalıştırın, ardından jQuery kullanılabilir olmalıdır ...

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

NOT: Sitede jQuery (diğer kütüphaneler, vb.) İle çakışan komut dosyaları varsa, yine de sorun yaşayabilirsiniz.

Güncelleme:

En iyisini daha iyi hale getirmek, bir Yer İşareti oluşturmak gerçekten kullanışlı hale getirir, hadi yapalım ve küçük bir geri bildirim de harika:

  1. Yer İşaretleri Çubuğu'nu sağ tıklayın ve Sayfa Ekle'yi tıklayın
  2. İstediğiniz gibi adlandırın, örneğin jQuery enjekte edin ve URL için aşağıdaki satırı kullanın:

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

Biçimlendirilmiş kod aşağıdadır:

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

Burada resmi jQuery CDN URL'si kullanılır, kendi CDN / sürümünüzü kullanmaktan çekinmeyin.


180
Bu pasaj benim için çalışmadı. Neden olduğunu anlamak için zamanım yoktu. Code.jquery.com/jquery-latest.min.js dosya içeriğini kopyalayıp konsola yapıştırın. Mükemmel çalışıyor.
Ruslanas Balčiūnas

9
Şimdi bunun için bir krom konsolu kısayol tuşuna ihtiyacım var ^^. Bu pasajı kullanarak TUTMAK ve geri almak için buraya sörf yapıyorum.
Cris Stringfellow

6
@CrisStringfellow - AKAIK eserlerde geliştirici parçacıkları özelliği var, kontrol edin chrome:flagsve orada olup olmadığını görün, açmanız gerekecek.
ocodo

2
@Slomojo Mizah anlayışından keyif alıyorum. Umarım derebeyler dinler, böylece DIY b-ağacı kanalını itebilirler. Ayrıca tüm deneylerin bu kadar yararlı bir şekilde nasıl sınıflandırıldığını da seviyorum. Ben karma değer sıralanır düşünüyorum.
Cris Stringfellow

2
Bu gemiyle ilgili bir sorunum vardı, ama buradaki stackoverflow.com/a/8225200/497208 benim için çalıştı
Jakub M.

227

Bunu konsolunuzda çalıştırın

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

Yeni bir komut dosyası etiketi oluşturur, jQuery ile doldurur ve başa ekler.


Bu mükemmel çalıştı, teşekkürler! (Kayıt için, "Yakalanmayan TypeError: $ bir işlev değil" alıyordum ve bunu çalıştırdıktan sonra, $ -seçici işlevlerini normal olarak kullanabildim ve zincirleyebildim.)
Ayelis

5
Güvenlik mesajı alırsanız (örneğin, Facebook'ta) jquery.js içeriğini javascript konsoluna kopyalayın / yapıştırın.
Thomas Decaux

1
@Genesis mükemmel çalışır! 2017, MS Edge tarayıcı.
Eric Hepperle - CodeSlayer2010

Bu mükemmel çalışıyor ve bir cankurtaran! Diğer önerilere göre çok daha basit ve anlaşılır.
Erica Summers

85

Her şeyi kopyalayın:
https://code.jquery.com/jquery-3.4.1.min.js

Ve konsola yapıştırın. Mükemmel çalışıyor.


12
Tıkır tıkır çalışıyor! DOM'a bazen 'İçerik Güvenliği Politikası Yönergesi' nedeniyle mümkün olmayan komut dosyası eklemez. Sonuç olarak kabul edilen bir cevap denedim: ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' komut dosyasını yüklemeyi reddetti çünkü şu İçerik Güvenliği Politikası yönergesini ihlal etti: "script-src .. ..
Kangur

1
Önce $ değişkeni olup olmadığını kontrol edin. JQuery değilse, muhtemelen $ var üzerinde jQuery tutun bırakmalısınız. Yukarıdaki kod türünü çağırdıktan sonra: $ .noConflict ()
Kangur

3 satırlık çeşitli cevaplar kullanmayı denedim. Hiçbiri kullanmama izin vermiyordu jQueryveya$ . Sadece bu çözüm işe yaradı. Ve sonra bu günlerde günlük konsolunu çok fazla kullanmadığımdan beri - her zaman komut geçmişimde, bu yüzden içeriğe ilk kez kopyaladıktan sonra - şimdi, sadece yukarı ok tuşuna basıp girmeniz gerekiyor. Çok havalı - teşekkür ederim
Gene Bo

sorunsuz cevap.! cevap olarak en iyi yorumunuzu arıyordu! harika.
Irf

Web 3.0 her zamanki gibi güzel görünüyor.
undercat alkışlar Monica

63

JQueryify kitapçığını kullanın:

http://marklets.com/jQuerify.aspx

Kodu diğer yanıtlara kopyalamak yerine, bu tıklanabilir bir yer işareti yapar.


4
diğer cevapları da bir yer imine kopyalayabilir ..... sadece url kodlayın ve javascript:ondan önce ekleyin .
d -_- b

Bir td öğesini değiştiren jQuery çağrısında ne var? Bu biraz rastgele ve / veya tehlikeli görünüyor. "td.editselectoption [value = BN]" ...
Kimball Robinson

Facebook diyor ki: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

@ Jondavidjohn cevabına ek olarak, javascript kodu olarak URL ile bir yer imi olarak da ayarlayabiliriz.

Ad: Jquery ekle

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

ardından Chrome veya Firefox araç çubuğuna ekleyin, böylece betiği tekrar tekrar yapıştırmak yerine yer işaretini tıklayabiliriz.

Yer işaretinin ekran görüntüsü


2
2 iyileştirmeler: 1) betiğin yüklenmesi zaman alır, bu nedenle if (jQuery) ... neredeyse her zaman başarısız olur. Yükü geciktirmek için bir setTimeout eklemenizi öneririm; 2) jquery-en son kullanmayın, gerçekten en son değildir ve kullanımı kullanımdan kaldırılmıştır (bu blog.jquery.com/2014/07/03/dont-use-jquery-latest-js adresine bakın )
Giuseppe Bertone

Bunu jQuery.noConflict();üzerinde test ediyordum rastgele bir sitede çalışmıyor gibi görünüyor. Zaten jQuery'ye sahip oldukları ortaya çıktı, ancak jQuery'nin $bir nedenden dolayı kısayolu yok . Ekran Görüntüsü: prntscr.com/bdcpdh .
Rani Kheir

22

Ben bir asiyim.

Çözüm: jQuery kullanmayın. jQuery, tarayıcılar arasındaki DOM tutarsızlıklarını özetleyen bir kütüphanedir. Kendi konsolunuzda olduğunuz için bu tür bir soyutlamaya ihtiyacınız yok.

Örneğiniz için:

$$('element').length

( $$bir takma addır)document.querySelectorAll konsoldaki addır.)

Başka bir örnek için: Eminim bir şey bulabilirim. Özellikle modern bir tarayıcı kullanıyorsanız (Chrome, FF, Safari, Opera).

Ayrıca, DOM'un nasıl çalıştığını kimseye zarar vermeyeceğini bilmek, sadece jQuery seviyenizi artıracaktır (evet, javascript hakkında daha fazla bilgi edinmek sizi jQuery'de daha iyi hale getirir).


4
Fikir için teşekkürler Florian. JQuery kullanan herkes de javascript bilmek gerektiğini kabul ediyorum. JQuery yüklemesi, yalnızca DOM tutarsızlıklarını soyutladığı için büyük bir zaman tasarrufu sağlar. Seçici motoru, sizzleherhangi bir yerel javascript çağrısından çok daha güçlüdür. Gibi $('div.className').children().hasClass('active').filter( function(index) { ... });bir şey için sorgulama düz js bir kabus olurdu.
mrtsherman

7
Bunu mu demek istediniz document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine

6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...ama evet mesele şu: modern tarayıcınız varsa dom jQuery olmadan bile ağrısızdır. :)
Esailija

5
Sen bir asi değilsin, bunun yerine, daha fazla yazarak zaman harcamaktan hoşlanıyorsun gibi görünüyor :)
Anderson Fortaleza

1
@DavidWest :1sahte bir seçici değil. Belki istiyorsun :first-child?
Florian Margaine

12

Ben sadece hata işleme ile bir jQuery 3.2.1 yer işareti yaptım (sadece yüklü değilse yükle, zaten yüklenmişse sürümü tespit et, yükleme sırasında hata varsa hata mesajı). Chrome 27'de test edilmiştir. JQuery 2.0, 1.9 ile API uyumlu olduğundan, Chrome tarayıcısında "eski" jQuery 1.9.1 kullanmak için bir neden yoktur .

Chrome'un geliştirici konsolunda aşağıdakileri çalıştırın veya yer işareti çubuğunuza sürükleyip bırakın :

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

Okunabilir kaynak kodu burada mevcuttur


.Js dosyasının URL'si güncellenmiş olsa da bu iyi çalışır.
dsomnus

Belki de bunu kullanmaya çalıştığınız web sitesi özel bir Content-Security-Policy üstbilgisi gönderir.
fnkr

8

En iyi cevap, jondavidjohn tarafından iyi ama birkaç noktaya değinmek için ince ayar yapmak istiyorum:

  • Çeşitli tarayıcılar http, sayfasından bir komut dosyasına bir komut dosyası yüklerken uyarı veriyorhttps .
  • Sadece değişen jquery.comiçin 'ın protokolühttps düz tarayıcınızın URL çubuğundan denemek eğer bir uyarı sonuçları:This is probably not the site you are looking for!
  • Gmail gibi Google sitelerini denemek için konsolu kullanırken Google'ın CDN'sini kullanmayı seviyorum.

Tek sorunum, konsolda her zaman en son istediğim bir sürüm numarası eklemem gerektiğidir.

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
Aşağıdaki İçerik Güvenlik Politikası yönergesini ihlal ettiği için ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' komut dosyasını yüklemeyi reddetti : "script-src 'self' 'güvenli olmayan satır içi' 'güvensiz-eval'". 'Script-src-elem' ifadesinin açıkça ayarlanmadığından, 'script-src' öğesinin yedek olarak kullanıldığını unutmayın.
Dimmduh

7

Başına bu cevap :

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

Nedense yeni '$' (diğer yöntemlerle de yapmak zorunda) almak için iki kez yürütmek zorunda, ama işe yarıyor.

Tarayıcınız çok modern değilse bu eşdeğerdir:

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

Belki de zaman uyumsuz olarak çalıştığı için JS geri çağrıları ve vaatleri böyle çalışır. Yani komut yürütüldüğünden emin olmak için, sen getir sözünün ardından 'callback'inde içinde kendi kod çalıştırmasına gerek: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Umarım bu size yardımcı olur.
Maciej Bukowski

Bu benim için işe yaramadı. Ancak son blokta iki eval olması işe yaradıfetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }) . Bu, iki kez yapmak zorunda kaldığınız kesin bir gelişmedir.
vt5491

içerik politikası ile ilgili bir sorun olduğunda davalar için harika
Alexey Sh.

5

Diğer cevapların açıkladığı gibi, bunu manuel olarak yapmak oldukça kolaydır. Ancak jQuerify eklentisi de var .


+1 - Teşekkürler Ken. JQuerify kelimesi bana bunu yapmak için bir yer imi oluşturduğumu hatırlattı. Kullandığım kodu içeren kendi cevabımı ekledim. Bunu daha önce yaptığımı biliyordum =).
mrtsherman

2
Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir. - Yorumdan
adamb

@ maalesef, maalesef, eski bağlantıların çürüme eğilimi, zamanım ve bu çok eski cevaplardan bazılarını geliştirme motivasyonumla birlikte yıllar içinde dağıldı. Bununla birlikte, SO'nun tasarımı sayesinde, cevabı kendiniz geliştirmekten daha fazlasını bekliyorsunuz - entropi ile mücadeleye her zaman yürekten takdir edilmektedir.
Ken Redler

5

FWIW, Firebug includeözel komutu yerleştirir ve jquery varsayılan olarak diğer addır: https://getfirebug.com/wiki/index.php/Include

Yani sizin durumunuzda, şunu yazmanız yeterlidir:

include("jquery");

Florent


Aslında include("http://code.jquery.com/jquery-latest.min.js", "jquery")ilk kullanımda. Eğer sadece include("jquery");hatayı alırsan Alias 'jquery' not found.. include("jquery");aynı kütüphaneyi farklı bir sekmede / alanda yeniden kullanmak içindir.
machineaddict

1
Varsayılan olarak olan Firebug 1.11.4'ten beri değil (bu sürümden önce takma adlar tanımlamadıysanız): code.google.com/p/fbug/issues/detail?id=6133 (Not: Bu özelliğin yazarı benim: ))
fflorent

Firebug 1.12.8'im var ve gidersem, Google diyelim, include("jquery")konsolda çalışırken bu hatayı bana veriyor .
machineaddict

Hmm, en son resmi sürüm olan Firebug 2.0.8'i kullanmalısınız. Ayrıca dahil ("jquery") sizin için işe yaramaz nedeni kesinlikle çünkü bahsettiğim gibi 1.11.4 sürümünden önce bir takma ad yarattı. Firefox profilinizdeki includeAliases.jsondosyayı ( include()takma adlar içeren ) kaldırın ve çalışması gerekir.
fflorent

3

@genesis cevabına dayalı bu cevap, ilk başta @jondavidjohn yer imi sürümünü denedim ve çalışmıyor, bu yüzden bunu değiştiriyorum (yer iminize ekleyin):

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

Dikkatli olun, kromda test edilmez, firefox'ta çalışır ve çakışma ortamında test edilmez.


2

En kısa yollardan biri, aşağıdaki kodu konsola kopyalamaktır.

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

Bunu bir kullanıcı metni için yapmak istiyorsanız, şunu yazdım: http://userscripts.org/scripts/show/123588

JQuery, artı kullanıcı arayüzü ve istediğiniz eklentileri eklemenize izin verir. 1.5.1 ve kullanıcı arayüzü olmayan bir sitede kullanıyorum; bu komut dosyası bana 1.7.1 artı UI sağlıyor ve Chrome veya FF'de çakışma yok. Opera'yı kendim test etmedim, ancak diğerleri bana onlar için de orada çalıştığını söylediler, bu yüzden bunun için yapmanız gereken buysa, tam bir çapraz tarayıcı kullanıcı metni çözümü olmalı.


1

Alternatif kod:

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

Konsolu ya doğrudan yapıştırılan veya yeni Sayfaya yer yaratmak mümkündür, (sağ tıklayıp Chrome'da İmi Bar , Sayfa Ekle ... ) ve URL olarak bu kodu yapıştırın.

Bunun işe yarayıp yaramadığını test etmek için aşağıya bakın.

Önce:

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

Sonra:

$()
[]

1

Konsoldan jQuery'yi sık sık kullanmak istiyorsanız, kolayca bir kullanıcı metni yazabilirsiniz. İlk olarak, Chrome'daysanız Tampermonkey'i ve Firefox'taysanız Greasemonkey'i yükleyin. Bunun gibi bir kullanım işleviyle basit bir kullanıcı metni yazın:

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

Anahtar teslim çözüm:

Kodunuzu yourCode_hereçalışır duruma getirin. HEAD etiketi olmadan HTML'yi önleyin.

(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

Modern tarayıcılar (Chrome, Firefox, Safari'de test edilmiştir) jQuery'ye$ çok benzeyen dolar işaretini kullanarak bazı yardımcı işlevler uygular (web sitesi kullanarak bir şey tanımlamazsa window.$).

Bu yardımcı programlar DOM'deki öğeleri seçmek ve değiştirmek için oldukça kullanışlıdır.

Dokümanlar: Chrome , Firefox


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.