Включіть jQuery в консоль JavaScript


772

Чи є простий спосіб включити jQuery в консоль JavaScript JavaScript для сайтів, які не використовують його? Наприклад, на веб-сайті я хотів би отримати кількість рядків у таблиці. Я знаю, що це jQuery дуже просто.

$('element').length;

Сайт не використовує jQuery. Чи можу я додати його в командному рядку?


3
Для більшої частини автоматизованого підходу ви можете використовувати сценарій користувача, щоб включити його. Серйозно це було б як
сценарій користування

9
document.getElementById('tableID').rows.length. Якщо в таблиці немає ідентифікатора, скористайтеся редактором DOM, щоб надати його. Вам не потрібен jQuery для чогось такого абсурдно тривіального.
Niet the Dark Absol

Для цього є хромоване розширення - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha

1
додайте його до тегу скрипту, або з cdn, або локально. CDN набагато простіше.
Донато

1
Я вважаю, що більшість основних інструментів веб-переглядачів зараз за замовчуванням включають jQuery (та кілька інших популярних бібліотек, таких як Underscore), але я не можу знайти документацію про нього. Відкрийте консоль, вона зазвичай просто працює (тм). ------ Крім того, такий підхід (тепер) давно вбудований у зручну закладку кількома людьми. Я використовував цей успішно: learningjquery.com/2009/04 / ... .
бричін

Відповіді:


1377

Запустіть це на консолі JavaScript браузера, тоді jQuery має бути доступним ...

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

ПРИМІТКА. Якщо на сайті є сценарії, що суперечать jQuery (інші лібри тощо), ви все ще можете зіткнутися з проблемами.

Оновлення:

Зробити все найкраще, створивши закладку, це дійсно зручно, давайте зробимо це, і невеликий відгук також чудовий:

  1. Клацніть правою кнопкою миші панель закладок та натисніть Додати сторінку
  2. Назвіть його так, як вам подобається, наприклад, Введіть jQuery і використовуйте наступний рядок для URL:

javascript: (функція (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')

Нижче відформатований код:

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

Тут використовується офіційний URL-код CDQ jQuery, не соромтесь використовувати власний CDN / версію.


180
Цей фрагмент не працював для мене. Не встиг зрозуміти, чому. Щойно скопіював вміст файлу code.jquery.com/jquery-latest.min.js і вставив його в консоль. Працює ідеально.
Русланас Бальчуунас

9
Тепер для цього мені просто потрібна гаряча клавіша з хромованої консолі. Я ПОВЕРНУТИСЯ, використовуючи цей фрагмент, і повертаюся сюди, щоб отримати його.
Cris Stringfellow

6
@CrisStringfellow - AKAIK в роботі працює функція фрагментів, перевірте свою інформацію chrome:flagsі перевірте, чи є вона, вам потрібно буде її ввімкнути.
ocodo

2
@Slomojo Мені подобається ваше почуття гумору. Сподіваємось, що сюзерени слухають, тож вони можуть натиснути на цей канал, зроблений з BD-дерева. Мені також особливо подобається, як усі експерименти класифіковані так корисно. Я думаю, вони сортували за хеш-значенням.
Cris Stringfellow

2
У мене була проблема з цим shippet, але один тут stackoverflow.com/a/8225200/497208 працював для мене
Якуб М.

227

Запустіть це у своїй консолі

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

Він створює новий тег сценарію, наповнює його jQuery і додає до голови.


Це спрацювало чудово, дякую! (Для запису я отримував "Uncaught TypeError: $ - це не функція", і після цього я зміг нормально використовувати та ланцюжок функцій $ -selector.)
Айеліс,

5
Якщо ви отримаєте повідомлення про безпеку (наприклад, у Facebook), просто скопіюйте та вставте вміст jquery.js у консоль javascript.
Томас Деко

1
Відмінно працює @genesis! 2017, браузер MS Edge.
Ерік Хепперл - CodeSlayer2010

Це прекрасно працює і є рятівником! Набагато простіший і простіший, ніж інші пропозиції.
Еріка Саммерс

85

Скопіюйте все з:
https://code.jquery.com/jquery-3.4.1.min.js

І вставити його в консоль. Працює чудово.


12
Працює як шарм! І він не додає сценарій до DOM, що іноді неможливо через "Директиву щодо політики щодо безпеки вмісту". Я спробував прийняти відповідь, в результаті якої: Відмовився завантажувати сценарій ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ', оскільки він порушує таку директиву щодо політики безпеки вмісту: "script-src .. ..
Кангур

1
Спочатку перевірте, чи є змінна $. Якщо це не jQuery, варто, мабуть, відпустити jQuery утримуючи $ var. Після виклику вище типу сценарію: $ .noConflict ()
Кангур

Я спробував використовувати різноманітні 3-рядкові відповіді .. жодна з них не дозволила б мені використовувати jQueryабо $. Тільки це рішення спрацювало. І тоді, оскільки я не використовую консоль журналу в іншому випадку занадто багато в ці дні - це завжди в моїй командній історії, тому після першого разу я скопіював вміст - тепер потрібно лише натиснути стрілку вгору, а потім увійти. Дуже круто - дякую
Джин Бо

гладка відповідь.! шукав ваш головний коментар як відповідь! чудовий.
Ірф

Web 3.0 виглядає красиво, як ніколи.
undercat аплодує Моніці

63

Використовуйте буклет jQueryify:

http://marklets.com/jQuerify.aspx

Замість того, щоб копіювати код, вставивши його в інші відповіді, це зробить закладку, яку можна натиснути.


4
Ви також можете скопіювати інші відповіді в закладку ..... просто зашифруйте URL та додайте javascript:перед цим.
d -_- b

Що з викликом jQuery, який змінює елемент td? Це здається трохи випадковим та / або небезпечним. "td.editselectoption [value = BN]" ...
Kimball Robinson

Facebook повідомляє:Content Security Policy: The page’s settings blocked the loading of a resource at https://code.jquery.com/jquery-latest.min.js (“script-src”).
Рішабх Аграхарі

30

Додавши до відповіді @ jondavidjohn, ми також можемо встановити її як закладку з URL-адресою як код javascript.

Назва: Включіть 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);

а потім додайте його на панель інструментів Chrome або Firefox, щоб замість того, щоб вставляти сценарій знову і знову, ми могли просто натиснути на закладку.

Знімок екрана закладок


2
2 вдосконалення: 1) для завантаження сценарію потрібен час, тому if (jQuery) ... майже завжди вийде з ладу. Я пропоную додати setTimeout для затримки завантаження; 2) не використовуйте jquery-latest, це насправді не останнє, а його використання застаріле (дивіться на цей blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
Джузеппе Бертоне

jQuery.noConflict();Зробив вигляд , щоб не працювати на випадковому місці , я відчував це на. Виявилося, у них вже є jQuery, але їхній jQuery $чомусь не має ярлика. Знімок екрана: prntscr.com/bdcpdh .
Рані Хейр

22

Я бунтівник.

Рішення: не використовуйте jQuery. jQuery - це бібліотека для вилучення недоліків DOM у веб-переглядачах. Оскільки ви перебуваєте у власній консолі, вам не потрібна така абстракція.

Для вашого прикладу:

$$('element').length

( $$є псевдонімом document.querySelectorAllу консолі.)

Для будь-якого іншого прикладу: я впевнений, що зможу знайти що завгодно. Особливо, якщо ви використовуєте сучасний браузер (Chrome, FF, Safari, Opera).

Крім того, знаючи, як працює DOM, нікому не зашкодить, це тільки підвищить рівень jQuery (так, дізнатися більше про JavaScript допоможе вам краще в jQuery).


4
Дякую за ідею Флоріану. Я погоджуюся, що кожен, хто використовує jQuery, також повинен знати JavaScript. Завантаження jQuery - це велика економія часу не лише тому, що вона абстрагує невідповідності DOM. Його селекторний двигун, sizzleє набагато потужнішим, ніж будь-який з власних дзвінків JavaScript. Запити щось подібне $('div.className').children().hasClass('active').filter( function(index) { ... });було б кошмаром у простому js.
mrtsherman

7
Ви маєте на увазі document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Флоріан Маргаїн

6
@FlorianMargaine, [].slice.call( document.querySelectorAll('div.className .active') ).filter...але так, справа: якщо у вас сучасний браузер, dom безболісний навіть без jQuery. :)
Esailija

5
Ти не бунтар, натомість, здається, ти любиш витрачати час, набираючи більше :)
Андерсон Форталеза

1
@DavidWest :1- це не псевдоселектор . Може, ти хочеш :first-child?
Флоріан Маргаїн

12

Щойно я зробив закладку jQuery 3.2.1 з керуванням помилками (завантажувати лише якщо вона ще не завантажена; виявити версію, якщо вона вже завантажена, повідомлення про помилку, якщо помилка під час завантаження). Тестовано в Chrome 27. Немає ніяких причин використовувати "старий" jQuery 1.9.1 у браузері Chrome, оскільки jQuery 2.0 сумісний з API та 1.9 .

Просто запустіть наступне на консолі розробника Chrome або перетягніть його на панелі закладок :

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

Читальний вихідний код доступний тут


Це добре працює, хоча URL для файлу .js має оновитись.
dsomnus

Можливо, веб-сайт, на якому ви намагаєтеся це використовувати, надсилає власні заголовки політики щодо вмісту та безпеки.
fnkr

8

Верхній відповідь на jondavidjohn це добре , але я хотів би, щоб налаштувати його , щоб вирішити пару пунктів:

  • Різні браузери видають попередження під час завантаження сценарію зі httpсторінки на https.
  • Просто зміна jquery.comпротоколу httpsпризводить до попередження, якщо ви спробуєте його прямо з URL-адреси браузера:This is probably not the site you are looking for!
  • Мені подобається використовувати CDN Google, коли я використовую консоль, щоб експериментувати з такими сайтами Google, як Gmail.

Єдине моє питання полягає в тому, що я повинен включати номер версії, де в консолі я дійсно завжди бажаю останнього.

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
Відмовилися завантажувати скрипт ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ', оскільки він порушує таку директиву щодо політики безпеки вмісту: "script-src 'self" "unsafe-inline" 'небезпечний-eval' ". Зауважте, що "script-src-elem" явно не встановлено, тому "script-src" використовується як резервний.
Діммдух

7

Відповідно до цієї відповіді :

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

З якоїсь причини мені доводиться виконувати його двічі, щоб отримати новий '$' (що я також маю робити з іншими методами), але він працює.

Це еквівалент, якщо ваш браузер не такий сучасний:

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

Можливо, тому, що він працює асинхронно, саме так працює зворотній зв'язок та обіцянки JS. Отже, щоб бути впевненим, що скрипт виконаний, вам слід запустити власний код всередині зворотного виклику "тоді" виклику: " fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Сподіваюся, що це вам допоможе.
Мацей Буковський

Це для мене не вийшло. Але мати два овалі в останньому блоці справді спрацювало fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Це певне поліпшення, ніж робити це двічі.
vt5491

дивовижно для тих випадків, коли у вас виникають проблеми із контент-політикою
Олексій Ш.

5

Це зробити досить просто вручну, як пояснюють інші відповіді. Але є також плагін jQuerify .


+1 - Дякую Кен. Слово jQuerify нагадало мені, що я створив закладку для цього. Я додав власну відповідь, яка мала код, який я використав. Я знав, що робив це раніше =).
mrtsherman

2
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
adamb

@adamb, на жаль, поряд із тенденцією старих посилань на занепад, мій час та мотивація вдосконалювати деякі ці дуже старі відповіді суттєво розсіювалися протягом багатьох років. Однак, завдяки дизайну SO, ви більше ніж бажаєте вдосконалити відповідь - внесок у боротьбу з ентропією, який завжди щиро цінується.
Кен Редлер

5

FWIW, Firebug вбудовує includeспеціальну команду, а jquery псевдонім за замовчуванням: https://getfirebug.com/wiki/index.php/Include

Тож у вашому випадку вам просто потрібно набрати:

include("jquery");

Флорент


Насправді це include("http://code.jquery.com/jquery-latest.min.js", "jquery")вперше. Якщо ви просто include("jquery");отримаєте помилку Alias 'jquery' not found.. include("jquery");призначений для повторного використання тієї ж бібліотеки на іншій вкладці / домені.
машинобудівний вирок

1
Не з Firebug 1.11.4, який за замовчуванням (якщо ви не визначили псевдоніми до цього випуску): code.google.com/p/fbug/isissue/detail?id=6133 (Примітка. Я є автором цієї функції: ))
fflorent

У мене Firebug 1.12.8, і якщо я перейду до, скажімо, Google, під час роботи include("jquery")в консолі отримує мені цю помилку.
машинобудівний вирок

Гм, ви повинні використовувати Firebug 2.0.8, яка є останньою офіційною версією. Також причина, чому include ("jquery") не працює для вас, є визначено, оскільки ви створили псевдонім до версії 1.11.4, як я вже згадував. Просто видаліть includeAliases.jsonфайл (який містить include()псевдоніми) у вашому профілі Firefox, і це повинно працювати.
fflorent

3

ця відповідь ґрунтується на @genesis відповіді, спочатку я спробував версію закладок @jondavidjohn, і вона не працює, тому я змінюю її на цю (додайте її у вашу закладку):

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

слова обережності, не перевіряються на хромі, але працюють у firefox та не перевіряються в конфліктному середовищі.


2

Одним з найкоротших способів було б просто скопіювати вставлення коду нижче на консоль.

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

Якщо ви хочете зробити це для сценарію користувача, я написав це: http://userscripts.org/scripts/show/123588

Це дозволить вам включити jQuery, плюс інтерфейс користувача та будь-які додатки, які ви хочете. Я використовую його на сайті, який має 1.5.1 і не має інтерфейсу користувача; цей сценарій дає мені натомість 1.7.1, плюс інтерфейс користувача, і немає конфліктів у Chrome чи FF. Я сам не тестував Opera, але інші сказали мені, що це працює і для них, тому це повинно бути цілком повним рішенням для сценаріїв крос-браузерного користувача, якщо для цього вам потрібно це зробити.


1

Ось альтернативний код:

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

яку можна вставити безпосередньо в Консоль або створити нову сторінку закладок (у Chrome правою кнопкою миші натисніть на панель закладок , Додати сторінку ... ) та вставте цей код як URL-адресу.

Щоб перевірити, чи це спрацювало, дивіться нижче.

Перед:

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

Після:

$()
[]

1

Якщо ви хочете часто використовувати jQuery з консолі, ви можете легко написати сценарій користувача. Спочатку встановіть Tampermonkey, якщо ви перебуваєте на Chrome і Greasemonkey, якщо ви перебуваєте на Firefox. Напишіть простий сценарій користувача з такою функцією використання:

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

Рішення під ключ:

Покладіть свій код у yourCode_hereфункцію. І запобігти HTML без тегу 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

Сучасні браузери (тестовані на Chrome, Firefox, Safari) реалізують деякі допоміжні функції, використовуючи знак долара, $який дуже схожий на jQuery (якщо веб-сайт не визначає щось, що використовує window.$).

Ці утиліти є досить корисними для вибору елементів у DOM та їх зміни.

Документи: Chrome , Firefox


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.