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

560

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

$('element').length;

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

  • 3
    Для более автоматизированного подхода вы можете использовать usercript, чтобы включить его. Серьезно, это будет похоже на пользовательский скрипт из 5 строк: P
  • 7
    document.getElementById('tableID').rows.length . Если у таблицы нет идентификатора, используйте редактор DOM, чтобы присвоить его. Вам не нужен jQuery для чего-то настолько абсурдного тривиального.
Показать ещё 3 комментария
Теги:

17 ответов

959
Лучший ответ

Запустите это в консоли браузера JavaScript, затем jQuery должен быть доступен...

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/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 (другие библиотеки и т.д.), вы все равно можете столкнуться с проблемами.

Обновление:

Сделав все возможное, создание закладки делает ее очень удобной, пусть это делает, и небольшая обратная связь тоже велика:

  • Щелкните правой кнопкой мыши на панели закладок и выберите Добавить страницу
  • Назовите его как хотите, например. Внесите jQuery и используйте следующую строку для URL:

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

  • 157
    Этот фрагмент не работал для меня. Не было времени понять, почему. Просто скопировал содержимое файла code.jquery.com/jquery-latest.min.js и вставил в консоль. Работает отлично.
  • 7
    Теперь мне просто нужна горячая клавиша консоли Chrome для этого ^^. Я продолжаю, используя этот фрагмент, и возвращаюсь сюда, чтобы получить его.
Показать ещё 20 комментариев
157

Запустите это в консоли

var script = document.createElement('script');script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";document.getElementsByTagName('head')[0].appendChild(script);

Создает новый тег script, заполняет его jQuery и добавляет в голову

  • 0
    Это сработало отлично, спасибо! (Для записи я получил «Uncaught TypeError: $ не является функцией», и после запуска я смог нормально использовать и связывать функции $ -selector.)
  • 5
    Если вы получаете сообщение о безопасности (например, на Facebook), просто скопируйте / вставьте содержимое jquery.js в консоль javascript.
Показать ещё 1 комментарий
64

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

http://marklets.com/jQuerify.aspx

Вместо копирования, вставляющего код в другие ответы, это сделает его интерактивной закладкой.

  • 3
    Можно также скопировать другие ответы в букмарклет ..... просто URL кодировать и добавить javascript: перед ним.
  • 0
    Что с вызовом jQuery, который изменяет элемент td? Это кажется немного случайным и / или опасным. "Td.editselectoption [значение = BN]" ...
Показать ещё 1 комментарий
48

Скопируйте http://code.jquery.com/jquery-latest.min.js содержимое файла и вставьте его в консоль. Прекрасно работает.

  • 12
    Работает как шарм! И это не добавляет сценарий в DOM, что иногда невозможно из-за «Директивы политики безопасности контента». Я попытался принять ответ, который привел к следующему: отказался загружать скрипт « ajax.googleapis.com/ajax/libs/jquery/1/jquery.js », поскольку он нарушает следующую директиву политики безопасности контента: «script-src .. ..
  • 1
    Сначала проверьте, есть ли переменная $. Если это не jQuery, то, вероятно, следует отпустить jQuery и удерживать $ var. После вызова вышеуказанного сценария введите: $ .noConflict ()
Показать ещё 3 комментария
26

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

Изображение 2251

  • 2
    2 улучшения: 1) для загрузки скрипта требуется время, поэтому if (jQuery) ... почти всегда завершится неудачей. Я предлагаю добавить setTimeout, чтобы задержать загрузку; 2) не используйте jquery-latest, это не совсем последняя версия, и ее использование устарело (см. Этот blog.jquery.com/2014/07/03/dont-use-jquery-latest-js )
  • 0
    jQuery.noConflict(); Похоже, он не работает на случайном сайте, на котором я тестировал. Оказалось, что у них уже был jQuery, но у их jQuery по какой-то причине нет ярлыка $ . Снимок экрана: prntscr.com/bdcpdh .
17

Я мятежник.

Решение: не используйте 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) {}) ? :п
Показать ещё 6 комментариев
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...")}}})())

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

  • 0
    Это хорошо работает, хотя URL для файла .js должен быть обновлен.
  • 1
    Я обновил код.
Показать ещё 2 комментария
7

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

  • Различные браузеры вызывают предупреждение при загрузке script с http на страницу https.
  • Простое изменение протокола jquery.com на https приводит к предупреждению, если вы попытаетесь выполнить его прямо из строки URL-адреса браузера: This is probably not the site you are looking for!
  • Мне нравится использовать Google CDN, когда я использую консоль для экспериментов с такими сайтами 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();
5

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

Итак, в вашем случае вам просто нужно ввести:

include("jquery");

Флоран

  • 0
    На самом деле это include("http://code.jquery.com/jquery-latest.min.js", "jquery") для первого использования. Если вы просто include("jquery"); Вы получаете ошибку Alias 'jquery' not found. , include("jquery"); в include("jquery"); для повторного использования одной и той же библиотеки на другой вкладке / в домене.
  • 1
    После Firebug 1.11.4, которая по умолчанию (если вы не определили псевдонимы до этого выпуска): code.google.com/p/fbug/issues/detail?id=6133 (Примечание. Я являюсь автором этой функции: ))
Показать ещё 2 комментария
5

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

  • 0
    +1 - Спасибо, Кен. Слово jQuerify напомнило мне, что я создал букмарклет для этого. Я добавил свой собственный ответ с кодом, который использовал. Я знал, что сделал это раньше =).
  • 2
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. - Из обзора
Показать ещё 1 комментарий
2

Этот ответ основан на ответе @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 и не тестируются в конфликтной среде.

  • 0
    прекрасно работает в Chrome 57 (март 2017)
2

Per этот ответ:

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)})
  • 0
    Возможно, потому что он работает асинхронно, именно так работают обратные вызовы и обещания JS. Таким образом, чтобы убедиться, что скрипт выполняется, вы должны запустить свой собственный код внутри обратного вызова then для обещания 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); console.log($) }) . Надеюсь, это поможет вам.
  • 0
    Это не сработало для меня. Но имея два Evals в последнем блоке сделал работу fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }) . Это определенное улучшение по сравнению с тем, чтобы сделать это дважды.
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 и без интерфейса; этот script дает мне 1.7.1 вместо этого плюс пользовательский интерфейс и никаких конфликтов в Chrome или FF. Я не тестировал Opera самостоятельно, но другие сказали мне, что она тоже работала для них, поэтому это должно быть довольно полным решением для обозревателя в браузере, если это необходимо для этого.

0

интуитивный однострочный

document.write(unescape('%3Cscript src="https://code.jquery.com/jquery-3.1.1.min.js"%3E%3C/script%3E’))

Вы можете изменить адрес src.
Я ссылался на ReferenceError: Не могу найти переменную: jQuery

0

Вот альтернативный код:

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

После:

$()
[]
0

Если вы хотите часто использовать jQuery с консоли, вы можете легко написать usercript. Во-первых, установите 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;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню