Sprawdzanie, czy jquery jest ładowane przy użyciu JavaScript

176

Próbuję sprawdzić, czy moja biblioteka Jquery jest załadowana na moją stronę HTML. Sprawdzam, czy działa, ale coś jest nie tak. Oto co mam:

<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>
SoftwareSavant
źródło
3
Nie używaj dużej litery R w „$ (dokument). Gotowy”
Serigan,
7
alert(window.$?1:0)
Thielicious
Dlaczego nadal używasz starego standardu xhtml? po prostu użyj <!doctype html>zamiast tego
Luke the Geek
Jeśli $(document)funkcja ready w ogóle działa, ładowane jest jquery. Możesz więc po prostu zrobić $(document).ready(function(){ alert("Ready!"); }); Granted, to nie wyświetli alertu, jeśli jquery nie uruchomi się. Ale wystarczy, jeśli po prostu chcesz sprawdzić, czy poprawnie odniosłeś się do biblioteki jquery.
ToolmakerSteve

Odpowiedzi:

338

coś jest nie tak

Cóż, używasz jQuery do sprawdzania obecności jQuery. Jeśli jQuery nie jest załadowany, to $()nawet w ogóle nie zostanie uruchomiony, a wywołanie zwrotne nie zostanie wykonane, chyba że używasz innej biblioteki, a ta biblioteka ma to samo$() składnię.

Usuń swoje $(document).ready()( window.onloadzamiast tego użyj czegoś takiego ):

window.onload = function() {
    if (window.jQuery) {  
        // jQuery is loaded  
        alert("Yeah!");
    } else {
        // jQuery is not loaded
        alert("Doesn't Work");
    }
}
BoltClock
źródło
1
Spowoduje to wyświetlenie błędu, który jQueryjest niezdefiniowany. Musisz sprawdzićwindow.jQuery .
gilly3,
@ gilly3: Tak, brzydkie problemy z zakresem. Naprawiony.
BoltClock
Mam plik jquery-1.6.3.min.js w tym samym katalogu, co plik html. Nie wiem, dlaczego się nie ładuje.
SoftwareSavant
3
@DmainEvent: Czy oba znajdują się w katalogu głównym? Twój srcma przewodzenie /, to znaczy, że szuka w korzeniu.
BoltClock
Właściwie nie. Pozwól, że to zmienię i daję temu szansę.
SoftwareSavant
46

Jak na ten link:

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


jest jeszcze kilka w komentarzach do linku,

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

//or

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

// or

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


Mam nadzieję, że to obejmuje większość dobrych sposobów na zrobienie tego !!

Tushar Shukla
źródło
2
@JakeN Po pewnym czasie głosów przeciw nie można cofnąć, chyba że post zostanie poddany edycji. Jest jednak jeden problem z tym postem: if (jQuery) {zgłosi błąd w trybie ścisłym, jeśli jQuery nie jest załadowany, więc ostatni fragment kodu jest złą sugestią.
JLRishe
21
if ('undefined' == typeof window.jQuery) {
    // jQuery not present
} else {
    // jQuery present
}
Niko
źródło
15

Możesz to zrobić szybko na karcie konsoli podczas przeglądania swojej strony internetowej.

Na przykład:

$ === jQuery

Jeśli zwraca true, oznacza to, że jest załadowany.

Alexein
źródło
Spowoduje to jednak zgłoszenie wyjątku, jeśli jQuery nie jest załadowany:Uncaught ReferenceError: jQuery is not defined
Batkins
10

Tylko mała modyfikacja, która może faktycznie rozwiązać problem:

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

Zamiast $(document).Ready(function()używać window.onload = function().

Nika Tsilosani
źródło
1

Jeśli jQueryładuje się asynchronicznie, możesz poczekać, aż zostanie zdefiniowany, sprawdzając go za każdym razem:

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

Tej metody można użyć dla dowolnej zmiennej, na którą czekasz.

V.Volkov
źródło
-2

Możesz po prostu wpisać window.jQueryConsole. Jeśli zwróci funkcję (e, n) ... Następnie zostanie potwierdzone, że jquery zostało załadowane i działa poprawnie.

Bharadwaj
źródło
-4

Szybkim sposobem jest uruchomienie polecenia jQuery w konsoli programisty. W dowolnej przeglądarce naciśnij F12 i spróbuj uzyskać dostęp do dowolnego elementu.

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

wprowadź opis obrazu tutaj

Jajikanth pydimarla
źródło