Kiểm tra nếu jquery được tải bằng Javascript


176

Tôi đang cố kiểm tra xem Thư viện Jquery của tôi có được tải lên trang HTML của tôi không. Tôi đang kiểm tra xem nó có hoạt động không, nhưng có gì đó không đúng. Đây là những gì tôi có:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="/query-1.6.3.min.js"></script>
        <script type="text/javascript">
          $(document).ready(function(){
             if (jQuery) {  
               // jQuery is loaded  
               alert("Yeah!");
             } else {
               // jQuery is not loaded
               alert("Doesn't Work");
             }
          });
        </script>

3
Đừng sử dụng chữ R viết hoa trong "$ (tài liệu) .Ready"
Serigan

7
alert(window.$?1:0)
Thielicy

Tại sao bạn vẫn sử dụng tiêu chuẩn xhtml cũ? chỉ sử dụng <!doctype html>thay thế
Luke the Geek

Nếu $(document)chức năng sẵn sàng chạy ở tất cả, thì jquery được tải. Vì vậy, bạn chỉ có thể thực hiện $(document).ready(function(){ alert("Ready!"); }); Cấp, điều này sẽ không hiển thị cảnh báo nếu jquery không chạy. Nhưng nó là đủ, nếu bạn chỉ cần xác minh rằng bạn đã tham khảo chính xác thư viện jquery.
ToolmakerSteve

Câu trả lời:


338

có gì đó không đúng

Chà, bạn đang sử dụng jQuery để kiểm tra sự hiện diện của jQuery. Nếu jQuery không được tải thì $()thậm chí sẽ không chạy và cuộc gọi lại của bạn sẽ không thực thi, trừ khi bạn đang sử dụng một thư viện khác và thư viện đó xảy ra để chia sẻ cùng một $()cú pháp.

Xóa của bạn $(document).ready()(sử dụng một cái gì đó như window.onloadthay thế):

window.onload = function() {
    if (window.jQuery) {  
        // jQuery is loaded  
        alert("Yeah!");
    } else {
        // jQuery is not loaded
        alert("Doesn't Work");
    }
}

1
Điều này vẫn sẽ đưa ra một lỗi như là khi jQuerykhông xác định. Bạn cần kiểm tra window.jQuery.
gilly3

@ gilly3: Vâng, vấn đề phạm vi phiền phức. Đã sửa.
BoltClock

Tôi có tệp jquery-1.6.3.min.js trong cùng thư mục với tệp html. Không chắc chắn tại sao nó không tải.
SoftwareSavant

3
@DmainEvent: Cả hai đều có trong thư mục gốc? Của bạn srccó một hàng đầu /, có nghĩa là nó đang tìm kiếm trong thư mục gốc.
BoltClock

Thật ra là không. Hãy để tôi thay đổi điều đó và cho nó một shot.
SoftwareSavant

46

Theo liên kết này :

if (typeof jQuery == 'undefined') {
    // jQuery IS NOT loaded, do stuff here.
}


Có một vài ý kiến ​​khác về liên kết cũng như,

if (typeof jQuery == 'function') {...}

//or

if (typeof $== 'function') {...}

// or

if (jQuery) {
    alert("jquery is loaded");
} else {
    alert("Not loaded");
}


Hy vọng điều này bao gồm hầu hết các cách tốt để hoàn thành công việc này !!


2
@JakeN Sau một khoảng thời gian nhất định, downvote không thể hoàn tác trừ khi bài đăng được chỉnh sửa. Tuy nhiên, có một vấn đề với bài đăng này: if (jQuery) {sẽ đưa ra một lỗi trong chế độ nghiêm ngặt nếu jQuery không được tải, do đó đoạn mã cuối cùng là một gợi ý tồi.
JLRishe

21
if ('undefined' == typeof window.jQuery) {
    // jQuery not present
} else {
    // jQuery present
}

15

Bạn có thể thực hiện việc này nhanh trên tab bảng điều khiển khi kiểm tra trang web của mình.

Ví dụ:

$ === jQuery

Nếu nó trả về truethì có nghĩa là nó đã được tải.


Điều này sẽ đưa ra một ngoại lệ nếu jQuery không được tải, mặc dù:Uncaught ReferenceError: jQuery is not defined
Batkins

10

Chỉ cần một sửa đổi nhỏ có thể thực sự giải quyết vấn đề:

window.onload = function() {
   if (window.jQuery) {  
       // jQuery is loaded  
       alert("Yeah!");
   } else {
    location.reload();
   }
}

Thay vì $(document).Ready(function()sử dụng window.onload = function().


1

Nếu jQueryđang tải không đồng bộ, bạn có thể đợi cho đến khi được xác định, kiểm tra từng khoảng thời gian:

(function() {
    var a = setInterval( function() {
        if ( typeof window.jQuery === 'undefined' ) {
            return;
        }
        clearInterval( a );

        console.log( 'jQuery is loaded' ); // call your function with jQuery instead of this
    }, 500 );
})();

Phương pháp này có thể được sử dụng cho bất kỳ biến nào, bạn đang chờ để xuất hiện.


-2

Bạn chỉ có thể gõ window.jQueryvào Console. Nếu nó trả về một hàm (e, n) ... Sau đó, nó được xác nhận rằng jquery được tải và hoạt động thành công.


-4

Một cách nhanh chóng là chạy lệnh jQuery trong bảng điều khiển dành cho nhà phát triển. Trên bất kỳ trình duyệt nào, nhấn F12 và cố gắng truy cập bất kỳ phần tử nào.

 $("#sideTab2").css("background-color", "yellow");

nhập mô tả hình ảnh ở đây

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.