Bao gồm jQuery trong Bảng điều khiển JavaScript


772

Có cách nào dễ dàng để đưa jQuery vào bảng điều khiển Chrome JavaScript cho các trang web không sử dụng nó không? Ví dụ, trên một trang web tôi muốn lấy số lượng hàng trong một bảng. Tôi biết điều này thực sự dễ dàng với jQuery.

$('element').length;

Trang web không sử dụng jQuery. Tôi có thể thêm nó vào từ dòng lệnh không?


3
Để biết thêm về cách tiếp cận tự động, bạn có thể sử dụng một mô tả người dùng để đưa nó vào. Nghiêm túc mà nói đây sẽ giống như một bản mô tả 5 dòng: P
rlemon

9
document.getElementById('tableID').rows.length. Nếu bảng không có ID, hãy sử dụng trình soạn thảo DOM để cung cấp ID. Bạn không cần jQuery cho một cái gì đó quá tầm thường.
Niet the Dark Tuyệt đối 23/10/13

Có một tiện ích mở rộng dành cho chrome để thực hiện việc này - chrome.google.com/webstore/detail/script-injection/,
Abhishek Saha

1
thêm nó vào thẻ script, từ cdn hoặc cục bộ. CDN đơn giản hơn nhiều.
Donato

1
Tôi tin rằng hầu hết các Công cụ Dev của các trình duyệt chính hiện nay đều bao gồm jQuery (và một vài thư viện phổ biến khác như Underscore) theo mặc định, nhưng không thể tìm thấy tài liệu về nó. Pop mở giao diện điều khiển nó thường chỉ hoạt động (tm). ------ Ngoài ra, cách tiếp cận này từ lâu đã được một số người sử dụng thành một bookmarklet tiện dụng. Tôi đã sử dụng thành công cái này: learningjquery.com/2009/04/ .
brichin

Câu trả lời:


1377

Chạy cái này trong bảng điều khiển JavaScript của trình duyệt của bạn, sau đó jQuery sẽ có sẵn ...

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

LƯU Ý: nếu trang web có các tập lệnh xung đột với jQuery (các lib khác, v.v.), bạn vẫn có thể gặp sự cố.

Cập nhật:

Làm cho tốt nhất tốt hơn, tạo một Bookmark làm cho nó thực sự tiện lợi, hãy làm điều đó và một chút phản hồi cũng rất tuyệt:

  1. Nhấp chuột phải vào Thanh dấu trang và nhấp vào Thêm trang
  2. Đặt tên cho nó như bạn muốn, ví dụ: Tiêm jQuery và sử dụng dòng sau cho URL:

javascript: (function (e, s) {e.src = s; e.onload = function () {jQuery.noConflict (); console.log ('jQuery được tiêm')}; document.head.appendChild (e); }) (document.createEuity ('script'), '// code.jquery.com/jquery-latest.min.js')

Dưới đây là mã được định dạng:

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

Ở đây, URL CDN chính thức của jQuery được sử dụng, vui lòng sử dụng CDN / phiên bản của riêng bạn.


180
Đoạn trích này đã không làm việc cho tôi. Không có thời gian để tìm hiểu tại sao. Chỉ cần sao chép nội dung tệp code.jquery.com/jquery-latest.min.js và dán vào bảng điều khiển. Hoạt động hoàn hảo.
Ruslanas Balčiūnas

9
Bây giờ tôi chỉ cần một phím nóng giao diện điều khiển chrome cho việc này ^^. Tôi KEEP sử dụng đoạn mã này và lướt trở lại đây để lấy nó.
Cris Stringfellow

6
@CrisStringfellow - AKAIK có một tính năng đoạn trích dành cho nhà phát triển trong các tác phẩm, kiểm tra chrome:flagsvà xem nếu nó ở đó, bạn sẽ cần phải bật nó lên.
ocodo

2
@Slomojo Tôi thích sự hài hước của bạn. Hy vọng rằng các lớp phủ đang lắng nghe, vì vậy họ có thể đẩy kênh DIY b-tree đó. Tôi cũng đặc biệt thích cách tất cả các thí nghiệm được phân loại rất hữu ích. Tôi nghĩ rằng họ sắp xếp trên giá trị băm.
Cris Stringfellow

2
Tôi đã gặp sự cố với shippet này, nhưng cái ở đây stackoverflow.com/a/8225200/497208 đã làm việc cho tôi
Jakub M.

227

Chạy cái này trong bảng điều khiển của bạn

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

Nó tạo ra một thẻ script mới, lấp đầy nó bằng jQuery và gắn vào đầu.


Điều này làm việc hoàn hảo, cảm ơn! (Đối với hồ sơ, tôi đã nhận được "của router Lỗi Loại: $ không phải là một chức năng", và sau khi chạy này, tôi đã có thể sử dụng và chức năng của chuỗi $ -selector bình thường.)
Ayelis

5
Nếu bạn nhận được thông báo bảo mật (ví dụ trên Facebook), chỉ cần sao chép / dán nội dung jquery.js trong bảng điều khiển javascript.
Thomas Decaux

1
Hoạt động hoàn hảo @genesis! 2017, trình duyệt MS Edge.
Eric Hepperle - CodeSlayer2010

Điều này hoạt động hoàn hảo và là một cứu cánh! Đơn giản và đơn giản hơn nhiều so với các đề xuất khác.
Erica Summers

85

Sao chép mọi thứ từ:
https://code.jquery.com/jquery-3.4.1.min.js

Và dán nó vào bàn điều khiển. Hoạt động hoàn hảo.


12
Hoạt động như một lá bùa! Và nó không thêm tập lệnh vào DOM mà đôi khi không thể thực hiện được do 'Chỉ thị chính sách bảo mật nội dung'. Tôi đã thử chấp nhận câu trả lời dẫn đến: Từ chối tải tập lệnh ' ajax.googleapis.com/ajax/libs/jquery/1/jquery.js ' vì nó vi phạm chỉ thị Chính sách bảo mật nội dung sau: "script-src .. ..
Kangur

1
Đầu tiên kiểm tra nếu có một biến $. Nếu không phải jQuery, có lẽ bạn nên bỏ jQuery giữ $ var. Sau khi gọi loại kịch bản trên: $ .noConflict ()
Kangur

Tôi đã thử sử dụng một loạt các câu trả lời 3 dòng .. không ai trong số chúng cho phép tôi sử dụng jQueryhoặc $. Chỉ có giải pháp này làm việc. Và sau đó vì tôi không sử dụng bảng điều khiển nhật ký quá nhiều trong những ngày này - nó luôn nằm trong lịch sử lệnh của tôi, vì vậy sau lần đầu tiên tôi sao chép nội dung - bây giờ, chỉ cần nhấn mũi tên lên và sau đó nhập. Rất tuyệt - cảm ơn bạn
Gene Bo

câu trả lời suôn sẻ.! đã tìm kiếm bình luận hàng đầu của bạn như là câu trả lời! tuyệt quá.
Irf

Web 3.0 trông đẹp hơn bao giờ hết.
undercat hoan nghênh Monica

63

Sử dụng tập sách jQueryify:

http://marklets.com/jQuerify.aspx

Thay vì sao chép dán mã trong các câu trả lời khác, điều này sẽ làm cho nó trở thành một dấu trang có thể nhấp.


4
cũng có thể sao chép các câu trả lời khác vào bookmarklet ..... chỉ cần mã hóa url và thêm javascript:trước nó.
d -_- b

Điều gì với lệnh gọi jQuery sửa đổi phần tử td? Điều đó có vẻ hơi ngẫu nhiên và / hoặc nguy hiểm. "td.editselectoption [value = BN]" ...
Kimball Robinson

Facebook nói: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

Thêm vào câu trả lời của @ jondavidjohn, chúng tôi cũng có thể đặt nó làm dấu trang với URL là mã javascript.

Tên: Bao gồm 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);

và sau đó thêm nó vào thanh công cụ của Chrome hoặc Firefox để thay vì dán tập lệnh nhiều lần, chúng ta chỉ cần nhấp vào bookmarklet.

Ảnh chụp màn hình của bookmark


2
2 cải tiến: 1) cần có thời gian để tập lệnh được tải, do đó, nếu (jQuery) ... hầu như luôn luôn thất bại. Tôi đề nghị thêm một setTimeout để trì hoãn tải; 2) không sử dụng jquery-mới nhất, nó không thực sự là mới nhất và việc sử dụng bị phản đối (xem blog này.jquery.com/2014/07/03/dont-use -jquery-latest- js )
Giuseppe Bertone

jQuery.noConflict();làm cho nó dường như không hoạt động trên một trang web ngẫu nhiên mà tôi đang thử nghiệm này. Hóa ra họ đã có jQuery, nhưng jQuery không có $lối tắt vì một số lý do. Ảnh chụp màn hình: prntscr.com/bdcpdh .
Rani Kheir

22

Tôi là một kẻ nổi loạn.

Giải pháp: không sử dụng jQuery. jQuery là một thư viện để trừu tượng hóa các mâu thuẫn DOM trên các trình duyệt. Vì bạn đang ở trong bảng điều khiển của riêng mình, bạn không cần loại trừu tượng này.

Ví dụ của bạn:

$$('element').length

( $$là bí danh document.querySelectorAlltrong bảng điều khiển.)

Đối với bất kỳ ví dụ khác: Tôi chắc chắn tôi có thể tìm thấy bất cứ điều gì. Đặc biệt nếu bạn đang sử dụng trình duyệt hiện đại (Chrome, FF, Safari, Opera).

Ngoài ra, biết cách DOM hoạt động sẽ không gây hại cho bất kỳ ai, nó sẽ chỉ làm tăng mức độ jQuery của bạn (vâng, tìm hiểu thêm về javascript giúp bạn giỏi hơn về jQuery).


4
Cảm ơn vì ý tưởng. Tôi đồng ý rằng bất cứ ai sử dụng jQuery cũng nên biết javascript. Tải jQuery là một trình tiết kiệm thời gian lớn không chỉ vì nó trừu tượng hóa sự không nhất quán của DOM. Công cụ chọn của nó, sizzlemạnh hơn nhiều so với bất kỳ lệnh gọi javascript gốc nào. Truy vấn cho một cái gì đó như $('div.className').children().hasClass('active').filter( function(index) { ... });sẽ là một cơn ác mộng trong js đồng bằng.
mrtsherman

7
Ý bạn là document.querySelectorAll('div.className .active').filter(function(index) {})sao : p
Florian Margaine

6
@FlorianMargaine [].slice.call( document.querySelectorAll('div.className .active') ).filter...nhưng vâng, quan điểm: nếu bạn có trình duyệt hiện đại thì không đau ngay cả khi không có jQuery. :)
Esailija

5
Thay vào đó, bạn không phải là một kẻ nổi loạn, có vẻ như bạn muốn lãng phí thời gian để gõ nhiều hơn :)
Anderson Fortaleza

1
@DavidWest :1không phải là bộ chọn giả. Có lẽ bạn muốn :first-child?
Florian Margaine

12

Tôi vừa tạo một bookmarklet jQuery 3.2.1 có xử lý lỗi (chỉ tải nếu chưa tải, phát hiện phiên bản nếu đã tải, thông báo lỗi nếu lỗi trong khi tải). Đã thử nghiệm trong Chrome 27. Không có lý do gì để sử dụng jQuery 1.9.1 "cũ" trên trình duyệt Chrome vì jQuery 2.0 tương thích API với 1.9 .

Chỉ cần chạy phần sau trong bảng điều khiển dành cho nhà phát triển của Chrome hoặc kéo và thả nó vào thanh dấu trang của bạn :

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

Mã nguồn có thể đọc được có sẵn ở đây


Điều này hoạt động tốt mặc dù url cho tệp .js phải được cập nhật.
DSomnus

Có thể trang web mà bạn đang cố sử dụng này sẽ gửi tiêu đề Chính sách bảo mật nội dung tùy chỉnh.
fnkr

8

Các câu trả lời hàng đầu, bởi jondavidjohn là tốt nhưng tôi muốn để tinh chỉnh nó để giải quyết một vài điểm:

  • Nhiều trình duyệt khác nhau đưa ra cảnh báo khi tải tập lệnh từ httptrang trên https.
  • Chỉ cần thay đổi jquery.comgiao thức thành httpskết quả cảnh báo nếu bạn thử trực tiếp từ thanh URL của trình duyệt:This is probably not the site you are looking for!
  • Tôi thích sử dụng CDN của Google khi tôi đang sử dụng bảng điều khiển để thử nghiệm các trang web của Google như Gmail.

Vấn đề duy nhất của tôi là tôi phải bao gồm số phiên bản trong bảng điều khiển mà tôi thực sự luôn muốn mới nhất.

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
Từ chối tải tập lệnh ' ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js ' vì nó vi phạm chỉ thị Chính sách bảo mật nội dung sau: "script-src 'tự' 'không an toàn-nội tuyến' 'Không an toàn-eval' ". Lưu ý rằng 'script-src-elem' không được đặt rõ ràng, vì vậy 'script-src' được sử dụng làm dự phòng.
Dimmduh

7

Mỗi câu trả lời này :

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

Vì một số lý do, tôi phải thực hiện hai lần để có được '$' mới (mà tôi cũng phải làm với các phương thức khác), nhưng nó hoạt động.

Điều này tương đương nếu trình duyệt của bạn không quá hiện đại:

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

Có thể bởi vì nó chạy không đồng bộ, đây là cách các cuộc gọi lại và lời hứa của JS hoạt động. Vì vậy, để chắc chắn rằng tập lệnh được thực thi, bạn phải chạy mã của riêng bạn trong cuộc gọi lại 'sau đó' của lời hứa tìm nạp : fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); console.log($) }). Hy vọng điều này sẽ giúp bạn.
Maciej Bukowski

Điều đó đã không làm việc cho tôi. Nhưng có hai evals trong khối cuối cùng đã làm việc fetch('http://code.jquery.com/jquery-latest.min.js').then(response => response.text()).then(text => { eval(text); eval(text) }). Đây là một cải tiến nhất định so với việc phải làm hai lần.
vt5491

tuyệt vời cho các trường hợp khi bạn gặp rắc rối với chính sách nội dung
Alexey Sh.

5

Thật dễ dàng để làm điều này bằng tay, như các câu trả lời khác giải thích. Nhưng cũng có trình cắm jQuerify .


+1 - Cảm ơn Ken. Từ jQuerify nhắc nhở tôi rằng tôi đã tạo một bookmarklet để làm điều này. Tôi đã thêm câu trả lời của riêng tôi có mã tôi đã sử dụng. Tôi biết tôi đã làm điều này trước đây =).
mrtsherman

2
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
adamb

@adamb, thật không may, cùng với xu hướng liên kết cũ bị phân rã, thời gian và động lực của tôi để cải thiện một số câu trả lời rất cũ này đã đồng thời tan biến trong những năm qua. Tuy nhiên, nhờ vào thiết kế của SO, bạn rất sẵn lòng cải thiện câu trả lời - một đóng góp cho cuộc đấu tranh chống lại entropy luôn được đánh giá cao.
Ken Redler

5

FWIW, Fireorms nhúng includelệnh đặc biệt và jquery được đặt bí danh theo mặc định: https://getfireorms.com/wiki/index.php/Include

Vì vậy, trong trường hợp của bạn, bạn chỉ cần gõ:

include("jquery");

Hoa


Trên thực tế, đây là include("http://code.jquery.com/jquery-latest.min.js", "jquery")lần đầu tiên sử dụng. Nếu bạn chỉ include("jquery");nhận được lỗi Alias 'jquery' not found.. include("jquery");là để sử dụng lại cùng một thư viện trên một tab / tên miền khác.
máy móc

1
Không phải kể từ Fireorms 1.11.4, theo mặc định (trừ khi bạn đã xác định bí danh trước khi phát hành này): code.google.com/p/forms/issues/detail?id=6133 (Lưu ý: Tôi là tác giả của tính năng này: ))
31 phút

Tôi có Fireorms 1.12.8 và nếu tôi truy cập, giả sử Google, trong khi chạy include("jquery")trong bảng điều khiển sẽ gặp phải lỗi đó.
machineaddict

Hmm, bạn nên sử dụng Fireorms 2.0.8, đây là phiên bản chính thức mới nhất. Ngoài ra, lý do tại sao bao gồm ("jquery") không hoạt động đối với bạn chắc chắn là vì bạn đã tạo bí danh trước phiên bản 1.11.4 như tôi đã đề cập. Chỉ cần xóa includeAliases.jsontệp (có chứa include()bí danh) trong hồ sơ firefox của bạn và nó sẽ hoạt động.
fflorent 30/03/2015

3

câu trả lời này dựa trên câu trả lời @genesis, lúc đầu tôi đã thử phiên bản đánh dấu @jondavidjohn và nó không hoạt động, vì vậy tôi thay đổi nó thành cái này (thêm nó vào dấu trang của bạn):

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

lời cảnh báo, không được thử nghiệm trong chrome nhưng hoạt động trong firefox và không được thử nghiệm trong môi trường xung đột.


2

Một trong những cách ngắn nhất sẽ là sao chép dán đoạn mã dưới đây vào bàn điều khiển.

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

Nếu bạn đang tìm cách làm điều này cho một usercript, tôi đã viết cái này: http://userscripts.org/scripts/show/123588

Nó sẽ cho phép bạn bao gồm jQuery, cộng với UI và bất kỳ plugin nào bạn muốn. Tôi đang sử dụng nó trên một trang web có 1.5.1 và không có UI; tập lệnh này cung cấp cho tôi 1.7.1 thay vào đó, cộng với giao diện người dùng và không có xung đột trong Chrome hoặc FF. Tôi đã không tự mình thử nghiệm Opera, nhưng những người khác đã nói với tôi rằng nó cũng hoạt động ở đó cho họ, vì vậy đây phải là một giải pháp người dùng đa trình duyệt hoàn chỉnh, nếu đó là những gì bạn cần làm điều này.


1

Đây là mã thay thế:

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

có thể được dán trực tiếp trong Bảng điều khiển hoặc tạo trang Bookmark mới (trong Chrome nhấp chuột phải vào Thanh dấu trang , Thêm trang ... ) và dán mã này dưới dạng URL.

Để kiểm tra nếu điều đó làm việc, xem bên dưới.

Trước:

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

Sau:

$()
[]

1

Nếu bạn muốn sử dụng jQuery thường xuyên từ bảng điều khiển, bạn có thể dễ dàng viết một mô tả người dùng. Đầu tiên, cài đặt Tampermonkey nếu bạn ở trên Chrome và Greasemonkey nếu bạn ở trên Firefox. Viết một mô tả người dùng đơn giản với chức năng sử dụng như thế này:

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

Giải pháp chìa khóa trao tay:

Đặt mã của bạn trong yourCode_herechức năng. Và ngăn HTML mà không có thẻ CHÍNH.

(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

Các trình duyệt hiện đại (đã được thử nghiệm trên Chrome, Firefox, Safari) triển khai một số chức năng của trình trợ giúp bằng cách sử dụng ký hiệu đô la $rất giống với jQuery (nếu trang web không xác định điều gì đó bằng cách sử dụng window.$).

Những tiện ích này khá hữu ích để chọn các thành phần trong DOM và sửa đổi chúng.

Tài liệu: Chrome , Firefox


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.