在JavaScript控制台中包含jQuery


772

对于不使用jQuery的网站,是否有简便的方法将jQuery包含在Chrome JavaScript控制台中?例如,在一个网站上,我想获取表中的行数。我知道使用jQuery确实很容易。

$('element').length;

该网站不使用jQuery。我可以从命令行添加它吗?


3
要获得更多的自动化方法,可以使用用户脚本来包含它。认真的说,这就像是5行用户脚本:P
rlemon

9
document.getElementById('tableID').rows.length。如果表没有ID,请使用DOM编辑器为其提供一个ID。您不需要jQuery就可以做到如此琐碎的琐事。
Niet the Dark Absol 2013年

有一个chrome扩展程序可以做到这一点-chrome.google.com/webstore/detail/script-injector/…–
Abhishek Saha

1
从CDN或本地将其添加到脚本标签。CDN更简单。
多纳托2015年

1
我相信大多数主流浏览器的开发工具现在默认都包含jQuery(以及一些其他流行的库,例如Underscore),但是找不到它的文档。弹出通常正常运行的控制台(tm)。------而且,这种方法(现在)早已由多个人构建到了方便的书签中。我已经成功使用了这一工具:learningjquery.com/2009/04/…
brichins

Answers:


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:(function(e,s){e.src = s; e.onload = function(){jQuery.noConflict(); console.log('jQuery injection')}}; 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')

这里使用官方的jQuery CDN URL,请随意使用您自己的CDN /版本。


180
此代码段对我不起作用。没有时间弄清楚为什么。只需复制code.jquery.com/jquery-latest.min.js文件内容并粘贴到控制台中即可。完美的作品。
RuslanasBalčiūnas2012年

9
现在,我只需要一个用于此^^的chrome控制台热键。我继续使用此代码段,然后回到此处进行获取。
Cris Stringfellow

6
@CrisStringfellow-AKAIK的工作中有一个开发人员摘要功能,请检查您的功能chrome:flags,看看是否存在,您需要将其打开。
ocodo

2
@Slomojo我很享受你的幽默感。希望霸主在听,这样他们就可以推动DIY b树频道。我也特别喜欢如何对所有实验进行如此有用的分类。我认为它们按哈希值排序。
Cris Stringfellow

2
我对这艘船有问题,但是这里的那个stackoverflow.com/a/8225200/497208为我工作了
Jakub M.

226

在控制台中运行

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函数。)
Ayelis

5
如果您收到安全消息(例如,在Facebook上),则只需在JavaScript控制台中复制/粘贴jquery.js内容。
2015年

1
完美工作@genesis!2017年,MS Edge浏览器。
Eric Hepperle-CodeSlayer2010 '17

这完美地工作并且是救生员!比其他建议更简单明了。
艾丽卡·萨默斯

85

复制以下所有内容:https :
//code.jquery.com/jquery-3.4.1.min.js

并将其粘贴到控制台中。完美运作。


12
奇迹般有效!而且它不会将脚本添加到DOM,这有时由于“内容安全策略指令”而无法实现。我尝试了接受的答案,结果是:拒绝加载脚本' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ',因为它违反了以下内容安全策略指令:“ script-src .. ..
Kangur

1
首先检查是否有$变量。如果不是jQuery,则应该放弃$ var的jQuery。调用上述脚本类型后:$ .noConflict()
Kangur 2013年

我尝试使用各种3行答案..它们都不允许我使用jQuery$。仅此解决方案有效。然后,由于这些天我没有过多地使用日志控制台-它始终存在于我的命令历史记录中,因此在我第一次复制内容之后-现在,只需要向上箭头键然后输入即可。非常酷-谢谢
Gene Bo

顺利回答。一直在寻找您的最高评价作为答案!大。
Irf '18 -4-19

Web 3.0看起来一如既往的美丽。
弱者为莫妮卡(Monica)

63

使用jQueryify手册:

http://marklets.com/jQuerify.aspx

与其复制粘贴代码到其他答案中,不如将其变成可点击的书签。


4
也可以将其他答案复制到小书签中.....只需对其进行url编码并添加javascript:
d -_- b

修改td元素的jQuery调用有什么用?这似乎有些随机和/或危险。“ 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”).
Rishabh Agrahari

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的工具栏中,这样我们就可以单击书签小书签,而不必一次又一次粘贴脚本。

书签的屏幕截图


2
2个改进:1)加载脚本需要时间,因此if(jQuery)...几乎总是失败。我建议添加一个setTimeout来延迟加载;2)不要使用jQuery的最新的,它不是真正的最新的,它的使用被废弃,(看看这个blog.jquery.com/2014/07/03/dont-use-jquery-latest-js
朱塞佩·贝尔托内

jQuery.noConflict();使它看起来在随机网站,我在测试这个不工作。原来他们已经有了jQuery,但是$由于某种原因,他们的jQuery没有捷径。屏幕截图:prntscr.com/bdcpdh
Rani Kheir

22

我是反叛者

解决方案:不要使用jQuery。jQuery是一个库,用于在浏览器中抽象出DOM不一致性。由于您位于自己的控制台中,因此不需要这种抽象。

例如:

$$('element').length

$$是的别名document.querySelectorAll控制台中。)

对于其他任何示例:我确定我能找到任何东西。特别是如果您使用的是现代浏览器(Chrome,FF,Safari,Opera)。

此外,知道DOM的工作原理不会伤害任何人,只会增加jQuery的水平(是的,了解更多有关javascript的知识可以使您在jQuery上更好。)


4
感谢Florian的想法。我同意使用jQuery的任何人也应该了解javascript。加载jQuery不仅可以节省DOM不一致性,还可以节省大量时间。其选择器引擎sizzle远比任何本机javascript调用都强大。$('div.className').children().hasClass('active').filter( function(index) { ... });在纯js中,查询类似内容将是一场噩梦。
mrtsherman'4

7
你是说document.querySelectorAll('div.className .active').filter(function(index) {})吗 :p
Florian Margaine '04年

6
@FlorianMargaine,[].slice.call( document.querySelectorAll('div.className .active') ).filter...但要点是:如果您拥有现代浏览器,即使没有jQuery,dom也不会感到痛苦。:)
Esailija

5
您不是反叛者,相反,您似乎想浪费时间输入更多:)
Anderson Fortaleza

1
@DavidWest :1不是伪选择器。也许你想要:first-child
Florian Margaine 2013年

12

我刚刚制作了带有错误处理的jQuery 3.2.1小书签(仅在未加载时加载,在已加载时检测版本,在加载时出现错误,则显示错误消息)。已在Chrome 27中进行了测试。由于jQuery 2.0与1.9的API兼容,因此没有理由在Chrome浏览器上使用“旧的” jQuery 1.9.1。

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

可读的源代码在这里


尽管必须更新.js文件的url,但此方法效果很好。
dsomnus

也许您尝试使用该网站的网站发送了一个自定义的Content-Security-Policy标头。
fnkr 2015年

8

jondavidjohn最高答案是好的,但我想对其进行调整以解决两点:

  • 各种浏览器在将脚本从加载http到页面上时会发出警告https
  • 只需将jquery.com的协议更改为https如果直接从浏览器的网址栏中尝试将则会产生警告:This is probably not the site you are looking for!
  • 当我使用控制台尝试Gmail等Google网站时,我喜欢使用Google的CDN。

我唯一的问题是,我必须在控制台中始终包含我确实想要最新版本的版本号。

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' “不安全评估””。请注意,未明确设置“ script-src-elem”,因此将“ script-src”用作后备。
Dimmduh

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回调和promises的工作方式。因此,要确保脚本已执行,您必须在fetch promise:的'then'回调中运行自己的代码fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) })。希望这对您有所帮助。
Maciej Bukowski

那对我没有用。但是在最后一个区块中有两个评估确实有效fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) })。这是必须执行两次的绝对改进。
vt5491 '16

如果您遇到内容政策方面的麻烦,那真是太棒了
Alexey Sh。

5

手动完成此操作非常容易,如其他答案所述。但是,还有jQuerify插件


+1-感谢Ken。jQuerify这个词提醒我,我创建了一个书签来执行此操作。我添加了自己的答案,其中包含我使用的代码。我知道我在=)之前已经这样做了。
mrtsherman 2011年

2
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。- 评论
-adamb

不幸的是,这些年来,@ adamb伴随着旧的链接逐渐消失的趋势,我的时间和动力也随之消失了。但是,由于采用了SO的设计,我们非常欢迎您自己改善答案-一直以来我们对由衷地对反熵的斗争做出了贡献。
肯·雷德勒'18

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");用于在不同选项卡/域上重用同一库。
machineaddict 2015年

1
从Firebug 1.11.4开始(默认情况下,除非您在此版本之前已定义别名),否则自:code.google.com/p/fbug/issues/detail?id=6133(注意:我是该功能的作者: ))
2015年

我有Firebug 1.12.8,如果我去的话,比方说Google,include("jquery")在控制台上运行时会得到该错误。
machineaddict

嗯,您应该使用Firebug 2.0.8,它是最新的正式版本。同样include(“ jquery”)对您不起作用的原因也明确地是因为您在我提到的1.11.4版本之前创建了别名。只需删除您的firefox配置includeAliases.json文件中的文件(包含include()别名)即可。
2015年

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中使用,且未在冲突环境中进行测试。


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,UI和所需的任何插件。我在具有1.5.1和没有UI的网站上使用它;这个脚本给了我1.7.1加上UI,并且在Chrome或FF中没有冲突。我自己还没有测试过Opera,但是其他人告诉我,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,则可以轻松编写用户脚本。首先,如果您使用的是Chrome,则安装Tampermonkey;如果您使用的是Firefox,则安装Greasemonkey。使用如下使用功能编写一个简单的用户脚本:

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函数中。并防止没有HEAD标签的HTML。

(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中的元素并进行修改非常有用。

文件:ChromeFirefox


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.