Überprüfen, ob jquery mit Javascript geladen ist


176

Ich versuche zu überprüfen, ob meine Jquery-Bibliothek auf meine HTML-Seite geladen ist. Ich überprüfe, ob es funktioniert, aber etwas stimmt nicht. Folgendes habe ich:

<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
Verwenden Sie kein großes R in "$ (Dokument). Bereit"
Serigan

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

Warum verwenden Sie immer noch den alten xhtml-Standard? Verwenden Sie <!doctype html>stattdessen
Luke the Geek

Wenn die $(document)Ready-Funktion überhaupt ausgeführt wird, wird jquery geladen. Sie können also einfach $(document).ready(function(){ alert("Ready!"); }); Granted ausführen. Dies zeigt keine Warnung an, wenn jquery nicht ausgeführt werden kann. Es reicht jedoch aus, wenn Sie lediglich überprüfen müssen, ob Sie korrekt auf die jquery-Bibliothek verwiesen haben.
ToolmakerSteve vor

Antworten:


338

etwas ist nicht richtig

Nun, Sie verwenden jQuery, um das Vorhandensein von jQuery zu überprüfen. Wenn jQuery nicht geladen ist, $()wird es überhaupt nicht ausgeführt und Ihr Rückruf wird nicht ausgeführt, es sei denn, Sie verwenden eine andere Bibliothek und diese Bibliothek hat zufällig dieselbe $()Syntax.

Entfernen Sie Ihre $(document).ready()(verwenden Sie window.onloadstattdessen so etwas wie ):

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

1
Dies wird immer noch einen Fehler jQueryauslösen, wenn er nicht definiert ist. Sie müssen überprüfen für window.jQuery.
gilly3

@ gilly3: Ja, lästige Scoping-Probleme. Fest.
BoltClock

Ich habe die Datei jquery-1.6.3.min.js im selben Verzeichnis wie die HTML-Datei. Ich bin mir nicht sicher, warum es nicht geladen wird.
SoftwareSavant

3
@DmainEvent: Befinden sich beide im Stammverzeichnis? Ihr srchat eine Führung /, das heißt, es schaut in die Wurzel.
BoltClock

Nicht wirklich. Lassen Sie mich das ändern und es versuchen.
SoftwareSavant

46

Gemäß diesem Link:

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


Es gibt noch ein paar mehr in den Kommentaren des Links wie:

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

//or

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

// or

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


Hoffe, dies deckt die meisten guten Möglichkeiten ab, um diese Sache zu erledigen !!


2
@JakeN Nach einer bestimmten Zeit können Abstimmungen nur rückgängig gemacht werden, wenn der Beitrag bearbeitet wurde. Es gibt jedoch ein Problem mit diesem Beitrag: if (jQuery) {Wird im strengen Modus einen Fehler auslösen, wenn jQuery nicht geladen ist, sodass das letzte Code-Snippet ein schlechter Vorschlag ist.
JLRishe

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

15

Sie können dies schnell auf der Registerkarte "Konsole" tun, wenn Sie Ihre Webseite überprüfen.

Z.B:

$ === jQuery

Wenn es zurückgibt true, bedeutet es, dass es geladen ist.


Dies wird eine Ausnahme Uncaught ReferenceError: jQuery is not defined
auslösen,

10

Nur eine kleine Modifikation, die das Problem tatsächlich lösen könnte:

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

Anstelle von $(document).Ready(function()Gebrauch window.onload = function().


1

Wenn jQuerydas Laden asynchron ausgeführt wird, können Sie warten, bis es definiert ist, und in jedem Zeitraum prüfen, ob es definiert ist:

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

Diese Methode kann für jede Variable verwendet werden, auf deren Anzeige Sie warten.


-2

Sie können einfach window.jQueryConsole eingeben. Wenn es eine Funktion zurückgibt (e, n) ... Dann wird bestätigt, dass die Abfrage geladen ist und erfolgreich funktioniert.


-4

Eine schnelle Möglichkeit besteht darin, einen jQuery-Befehl in der Entwicklerkonsole auszuführen. Drücken Sie in einem beliebigen Browser F12 und versuchen Sie, auf eines der Elemente zuzugreifen.

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

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.