Chrome-Erweiterung "$ ist nicht definiert" Fehler

8

Ich erhalte den Fehler "$ ist nicht definiert", wenn ich an meiner Chrome-Erweiterung arbeite.

Dies ist meine Manifest-Datei:

%Vor%

Das ist meine background.js Datei:

%Vor%

Zuletzt die Datei, in der der Fehler ausgelöst wird: content.js

%Vor%

Nach meinem Verständnis passiert das, weil JQuery nicht geladen wird. Allerdings lade ich es richtig in das Manifest und jquery.js ist auch die erste Datei, die im Manifest-Inhaltsskript aufgerufen wird. Bitte hilf mir beim Debuggen. Danke!

    
chaitanya.varanasi 05.10.2013, 16:23
quelle

3 Antworten

1

Ich habe keine Ahnung, wie es funktioniert, aber irgendwie, als ich JQuery zu seiner minimierten Version änderte und es jetzt funktioniert.

    
chaitanya.varanasi 05.10.2013, 17:42
quelle
11

Dies geschieht, wenn das Skript, das jQuery aufruft, vor dem Laden von jQuery.js geladen wird. In dem Beispiel, das der Fragendokument übergeben hat, wird der Hintergrund vor dem Inhaltsskript geladen, und das Inhaltsskript lädt jQuery selbst, nachdem das Hintergrundskript jQuery aufgerufen hat. Dieses Beispiel kann behoben werden, indem das Hintergrundskript jQuery selbst wie folgt lädt:

%Vor%

Beachten Sie auch, dass js-Dateien, die im Manifest aufgelistet sind, in der Reihenfolge geladen werden, in der sie angezeigt werden. Angenommen, Sie haben eine Datei namens "script.js", die Folgendes enthält:

%Vor%

Wenn Sie Ihr Manifest wie folgt schreiben (FALSCH), erhalten Sie den Fehler "$ ist nicht definiert":

%Vor%

Durch das Ändern des Manifests (RECHTS) wird der Fehler behoben:

%Vor%

Beachten Sie, dass "jquery.js" jetzt vor "script.js" steht und daher zuerst geladen wird.

Das Problem kann zeitweise auftreten, da beide Skripts fast gleichzeitig geladen werden. Wenn Sie das Skript so ändern, dass der Aufruf von jQuery unter einigen anderen JavaScript-Befehlen liegt, kann die Zeit, die für die Ausführung dieser anderen Befehle benötigt wird, gerade genug Zeit sein, damit jQuery.js vollständig geladen werden kann. Wenn Sie zum Beispiel das Manifest falsch geschrieben haben, können Sie den Fehler auch technisch beheben, indem Sie die Datei script.js wie folgt ändern:

%Vor%

Die Verzögerung von 1 Sekunde gibt jQuery.js genug Zeit zum Laden, dies ist jedoch offensichtlich nicht die ideale Lösung!

    
mattthew 30.10.2014 08:08
quelle
-3

Irgendwo gibt es einen Konflikt. Beheben Sie es, indem Sie alle Instanzen von $ durch jQuery ersetzen.

    
musical_coder 05.10.2013 16:26
quelle