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

772

Есть ли простой способ включить jQuery в консоль Chrome JavaScript для сайтов, которые его не используют? Например, на веб-сайте я хотел бы получить количество строк в таблице. Я знаю, что это действительно легко с JQuery.

$('element').length;

Сайт не использует jQuery. Могу ли я добавить его из командной строки?

mrtsherman
источник
3
Для более автоматизированного подхода вы можете использовать usercript, чтобы включить его. Серьезно, это будет похоже на пользовательский скрипт из 5 строк: P
rlemon
9
document.getElementById('tableID').rows.length, Если таблица не имеет идентификатора, используйте редактор DOM, чтобы присвоить его. Вам не нужен jQuery для чего-то настолько абсурдного тривиального.
Niet the Dark Absol
Для этого есть расширение chrome - chrome.google.com/webstore/detail/script-injector/…
Abhishek Saha
1
добавьте его в тег скрипта, либо из cdn, либо локально. CDN намного проще.
Донато
1
Я полагаю, что большинство инструментов Dev для большинства браузеров по умолчанию включают jQuery (и несколько других популярных библиотек, таких как Underscore), но я не могу найти документацию по ним. Откройте консоль, обычно это просто работает (тм). ------ Кроме того, этот подход (сейчас) уже давно встроен в удобный букмарклет несколькими людьми. Я успешно использовал это: learningjquery.com/2009/04/… .
Бричинс

Ответы:

1378

Запустите это в консоли 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. Назовите его так, как вам нравится, например, Inject jQuery, и используйте следующую строку для URL:

javascript: (function (e, s) {e.src = s; e.onload = function () {jQuery.noConflict (); console.log ('jQuery injected')}; document.head.appendChild (e); }) (document.createElement ( 'сценарий'), '// 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 jQuery CDN, не стесняйтесь использовать свою собственную CDN / версию.

jondavidjohn
источник
180
Этот фрагмент не работал для меня. Не было времени понять, почему. Просто скопировал содержимое файла code.jquery.com/jquery-latest.min.js и вставил в консоль. Работает отлично.
Русланас Балчюнас
9
Теперь мне просто нужна горячая клавиша консоли Chrome для этого ^^. Я продолжаю использовать этот фрагмент и перебираюсь сюда, чтобы получить его.
Крис Стрингфеллоу
6
@CrisStringfellow - AKAIK, в работе есть функция отрывков для разработчиков, проверьте chrome:flagsи посмотрите, есть ли она, вам нужно ее включить.
ocodo
2
@Slomojo Я наслаждаюсь твоим чувством юмора. Надеемся, что повелители прислушиваются, чтобы они могли протолкнуть этот самодельный канал b-tree. Мне также особенно нравится, как все эксперименты так полезны. Я думаю, что они отсортированы по значению хеша.
Крис Стрингфеллоу
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 ()
Kangur
Я пытался использовать различные 3-строчные ответы. Ни один из них не позволил бы мне использовать jQueryили $. Только это решение сработало. И потом, поскольку я не слишком часто использую консоль журнала в эти дни - это всегда в моей истории команд, поэтому после того, как я впервые скопировал содержимое - теперь нужно только нажать стрелку вверх и затем войти. Очень круто - спасибо
Джин Бо
гладкий ответ. искал ваш главный комментарий в качестве ответа! Великий.
Irf
Веб 3.0 выглядит красиво, как никогда.
Undercat аплодирует Моника
63

Используйте буклет jQueryify:

http://marklets.com/jQuerify.aspx

Вместо того, чтобы вставлять код в другие ответы, это сделает закладку кликабельной.

медер омуралиев
источник
4
Можно также скопировать другие ответы в букмарклет ..... просто URL кодировать и добавить javascript:перед ним.
d -_- б
Что с вызовом jQuery, который изменяет элемент td? Это кажется немного случайным и / или опасным. "td.editselectoption [value = BN]" ...
Кимбалл Робинсон
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

Адрес:

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, чтобы вместо того, чтобы вставлять скрипт снова и снова, мы можем просто нажать на букмарклет.

Скриншот закладки

manish_s
источник
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.
Мртшерман
7
Вы имеете в виду document.querySelectorAll('div.className .active').filter(function(index) {})? : p
Florian Margaine
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...")}}})())

Читаемый исходный код доступен здесь

fnkr
источник
Это хорошо работает, хотя URL для файла .js должен быть обновлен.
dsomnus
Возможно, веб-сайт, на котором вы пытаетесь это использовать, отправляет специальный заголовок Content-Security-Policy.
fnkr
8

Верхний ответ на jondavidjohn это хорошо , но я хотел бы, чтобы настроить его , чтобы решить пару пунктов:

  • Различные браузеры выдают предупреждение при загрузке скрипта со httpстраницы на https.
  • Простое изменение jquery.comпротокола httpsприводит к предупреждению, если вы попробуете его прямо из адресной строки браузера: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();
hippietrail
источник
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)})
vt5491
источник
Возможно, потому что он работает асинхронно, именно так работают обратные вызовы и обещания JS. Таким образом , чтобы быть уверенными , что скрипт выполняется, вы должны запустить свой собственный код внутри « затем» обратного вызова из выборки обещания: fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Надеюсь, это поможет вам.
Мацей Буковски
Это не сработало для меня. Но имея два Evals в последнем блоке сделал работу fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Это определенное улучшение по сравнению с необходимостью сделать это дважды.
vt5491
Круто для случаев, когда у тебя проблемы с контент-политикой
Алексей Ш.
5

Это довольно легко сделать вручную, как объясняют другие ответы. Но есть также плагин jQuerify .

Кен Редлер
источник
+1 - Спасибо, Кен. Слово jQuerify напомнило мне, что для этого я создал букмарклет. Я добавил свой собственный ответ с кодом, который использовал. Я знал, что сделал это раньше =).
Мртшерман
2
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из обзора
Адам
@adamb, к сожалению, наряду с тенденцией к разрушению старых ссылок, мое время и мотивация к улучшению некоторых из этих очень старых ответов со временем исчезли. Тем не менее, благодаря дизайну SO вы можете сами улучшить ответ - вклад в борьбу с энтропией, который всегда от всего сердца ценится.
Кен Редлер
5

FWIW, Firebug встраивает includeспециальную команду, и jquery имеет псевдоним по умолчанию: https://getfirebug.com/wiki/index.php/Include

Так что в вашем случае вам просто нужно набрать:

include("jquery");

Флоран

fflorent
источник
На самом деле это include("http://code.jquery.com/jquery-latest.min.js", "jquery")в первый раз. Если вы просто include("jquery");получите ошибку Alias 'jquery' not found.. include("jquery");предназначен для повторного использования одной и той же библиотеки на другой вкладке / в домене.
machineaddict
1
После Firebug 1.11.4, которая по умолчанию (если вы не определили псевдонимы до этого выпуска): code.google.com/p/fbug/issues/detail?id=6133 (Примечание. Я являюсь автором этой функции: ))
fflorent
У меня Firebug 1.12.8, и если я зайду, скажем, Google, то, работая include("jquery")в консоли, получит эту ошибку.
Machineaddict
Хм, вы должны использовать 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')}());

слова предостережения, не тестируется в Chrome, но работает в Firefox и не тестируется в конфликтной среде.

whale_steward
источник
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);
RegarBoy
источник
1

Если вы хотите сделать это для пользовательского сценария, я написал это: http://userscripts.org/scripts/show/123588

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

BrianFreud
источник
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(…)

После:

$()
[]
kenorb
источник
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>");
}

A-312
источник
1

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

Эти утилиты весьма полезны для выбора элементов в DOM и их изменения.

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

Zanon
источник