对于不使用jQuery的网站,有没有一种简单的方法将jQuery包含在Chrome JavaScript控制台中?例如,在一个网站上,我想获取表中的行数。我知道jQuery很容易做到这一点。

$('element').length;

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


在浏览器的JavaScript控制台中运行此命令,则jQuery应该可用。。。

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.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(其他库等)冲突的脚本,您仍可能遇到问题。

更新:

做得更好,创建书签会非常方便,让我们来做吧,一点反馈也很棒:

右键单击书签栏,然后单击添加页面根据需要命名它,例如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('script'),'//code.jquery.com/jquery-last.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/版本。


在控制台中运行

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

它创建一个新的脚本标记,用jQuery填充并附加到头部。


正如其他答案所解释的那样,手动执行此操作非常容易。但还有jQueify插件。


使用jQueryify小册子:

https://web.archive.org/web/20190502132317/http://marklets.com/jQuerify.aspx

这将使它成为一个可点击的书签,而不是复制粘贴其他答案中的代码。


如果您希望为用户脚本执行此操作,我会这样写:http://userscripts.org/scripts/show/123588

它将允许您包含jQuery,以及UI和任何您想要的插件。我在一个有1.5.1但没有UI的网站上使用它;这个脚本给了我1.7.1,加上UI,在Chrome或FF中没有冲突。我自己没有测试过Opera,但其他人告诉我它也适用于他们,所以这应该是一个完整的跨浏览器用户脚本解决方案,如果你需要这样做的话。


我是个叛逆者。

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

例如:

$$('element').length

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

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

此外,了解DOM的工作原理不会伤害任何人,它只会提高您的jQuery水平(是的,了解更多有关javascript的知识会让您更擅长jQuery)。


由jondavidjohn给出的最佳答案很好,但我想对其进行调整,以解决以下几点:

各种浏览器在将脚本从http加载到https页面时发出警告。如果您直接从浏览器的URL栏尝试,只需将jquery.com的协议更改为https,就会收到警告:这可能不是您要查找的站点!当我使用控制台尝试Gmail等谷歌网站时,我喜欢使用谷歌的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();

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

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


添加到@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的工具栏中,这样我们就不用一次又一次地粘贴脚本,只需单击书签即可。


我刚刚制作了一个带有错误处理的jQuery3.2.1书签(如果尚未加载,则仅加载,如果已加载,则检测版本,如果加载时出错,则显示错误消息)。在Chrome 27中测试。没有理由在Chrome浏览器上使用“旧”jQuery 1.9.1,因为jQuery 2.0与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...")}}})())

此处提供可读源代码


如果您想经常从控制台使用jQuery,那么可以很容易地编写用户脚本。首先,如果您使用的是Chrome,请安装Tampermonkey;如果您使用Firefox,请安装Greasemonkey。使用如下的use函数编写一个简单的用户脚本:

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

FWIW,Firebug嵌入include特殊命令,jquery默认为别名:https://getfirebug.com/wiki/index.php/Include

因此,在您的情况下,您只需键入:

include("jquery");

弗洛朗


以下是替代代码:

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

它可以直接在Console中粘贴,也可以创建一个新的书签页面(在Chrome中,右键单击书签栏,添加页面…)并将此代码粘贴为URL。

要测试这是否有效,请参见下文。

之前:

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

之后:

$()
[]

最短的方法之一就是将下面的代码复制粘贴到控制台。

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

根据这个答案:

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

这个答案基于@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中有效,也没有在冲突环境中测试。


直观的单线图

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

您可以更改src地址。我引用了ReferenceError:找不到变量:jQuery


交钥匙解决方案:

将代码放入code_here函数中。并防止没有HEAD标记的HTML。

(功能(头部){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'));函数jQueryReady(){if(window.jQuery){jQuery.noConflict();您的代码_此处(jQuery);}其他{setTimeout(jQueryReady,100);}}jQueryReady();函数yourCode_here($){console.log(“OK”);$(“body”).html(“<h1>你好!</h1>”);}


现代浏览器(在Chrome、Firefox、Safari上测试)使用美元符号$实现了一些助手函数,这些函数与jQuery非常相似(如果网站没有使用window.$定义某些东西)。

这些实用程序对于选择DOM中的元素并修改它们非常有用。

文档:Chrome、Firefox


2020年后方法,使用:

动态导入自动执行IIFE异步的,异步的作用箭头函数

(异步()=>{等待导入('https://code.jquery.com/jquery-2.2.4.min.js')//库准备就绪console.log(jQuery)})()


如果没有异步,因为import确实返回Promise,所以我们必须使用.then():

导入('https://code.jquery.com/jquery-2.2.4.min.js').然后(()=>{console.log(jQuery)})

另一个例子

https://caniuse.com/es6-module-dynamic-import


我已经在公认的解决方案基础上进行了改进

var also_unconflict = typeof $ != "undefined";

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

if(also_unconflict){
    setTimeout(function(){
        $=jQuery.noConflict();
        console.log('jquery loaded, use jQuery instead of $')
    }, 500)
}else{
    console.log('jquery loaded, you can use $');
}

我在googlechrome控制台片段中使用这个函数


另一个选项是将jQuery内容保存在一个代码段(chrome)中,然后在您想要的任何站点上运行(右键单击+运行或CTRL+Enter)。如果您想按需运行,则不一定是jQuery任何javascript。(例如:SharePoint JSOM..只需将所有JSOM文件保存为片段并按所需顺序运行)