Warum funktioniert Javascript nur, wenn es eingeloggt ist?

Ich versuche ein einfaches Skript zu implementieren:

jQuery(document).ready(function($){ $(window).scroll(function(){ if($(window).scrollTop() >= $('#masthead').outerHeight()) { $("#masthead").addClass("minimize"); } else{ $("#masthead").removeClass("minimize"); } }); }); 

Es funktioniert perfekt, wenn der Benutzer bei WP angemeldet ist. Für normale Benutzer wird das Skript in die Fußzeile geladen, tut aber nichts.

Ich bekomme diesen Fehler auch von der Konsole:

 Uncaught ReferenceError: jQuery is not definedfixed-menu.js?ver=20150318:1 (anonymous function) 

PD: Ich habe wp_enqueue_script in meiner functions.php wie bei jeder anderen externen js verwendet:

 function nevermind_scripts() { wp_enqueue_style( 'nevermind-style', get_stylesheet_uri() ); wp_enqueue_style( 'nevermind-google-fonts', 'http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,900,300italic,400italic|Droid+Serif'); wp_enqueue_style( 'nevermind-font-awesome', 'http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'); wp_enqueue_script( 'nevermind-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20120206', true ); wp_enqueue_script( 'nevermind-fixed-menu', get_template_directory_uri() . '/js/fixed-menu.js', array(), '20150318', true ); } add_action( 'wp_enqueue_scripts', 'nevermind_scripts' ); 

Solutions Collecting From Web of "Warum funktioniert Javascript nur, wenn es eingeloggt ist?"

Versuchen:

 wp_enqueue_script( 'nevermind-navigation', get_template_directory_uri() . '/js/navigation.js', array('jquery') ); 

Es ist möglich, dass jQuery nicht in die Warteschlange eingereiht wird und Sie es nicht als Abhängigkeit für Ihr Skript deklarieren. Wenn Sie angemeldet sind, wird jQuery automatisch in die Warteschlange eingereiht.

Bearbeiten: Konsolenprotokoll sagt, dass jQuery is not defined . Haben Sie eine jQuery(document).ready($) function für die fixed-menu.js functionen hinzugefügt?

CDNs, Remote-Ressourcen und Kreuzherkunftsanforderungen

Vielleicht möchten Sie die http: für Ihre CDNs zuerst ersetzen. Es könnte sein, dass es Kreuzherkunftsanforderungsprobleme gibt, wenn diese verwendet werden. Durch das Weglassen des Protokolls kann der Browser je nach Situation das richtige Protokoll auswählen. Das feste Protokoll ist oft ein Problem in Chrome – dem “überschützenden Elternteil”.

Abhängigkeit Injektionslicht in JavaScript

Abgesehen davon können Sie immer testen, ob eine Abhängigkeit geladen ist. Dies kann einfach durchgeführt werden, indem es in eine selbstaufrufende function eingecheckt und in der Konsole protokolliert wird:

 ( function( $ ) { "use strict"; console.log( $ ); } )( jQuery || {} ); 

Dies bedeutet, dass entweder das vollständige jQuery Objekt protokolliert wird oder – wenn es nicht rechtzeitig genug geladen wurde – das Objekt {} / empty. Wenn Letzteres der Fall ist, dann können Sie mit dem von @Ciprian vorgeschlagenen Schritt gehen: Fügen Sie Ihre Abhängigkeit hinzu, wenn Sie Ihr Skript registrieren / einreihen:

 wp_enqueue/register_script( $handle, plugin_dir_url( __FILE__ ).'assets/js/script.js', array( 'jquery' ), filemtime( plugin_dir_path( __FILE__ ).'assets/js/script.js' ), true ); 

Sie können eine der folgenden functionen für Ihren URL / Pfad-Dump verwenden, falls Sie sich nicht sicher sind, was Sie erhalten

  • get_template_directory() – Pfad zum übergeordneten Thema root dir
  • get_stylesheet_directory() – Pfad zum get_stylesheet_directory() Thema root dir
  • get_template_directory_uri() – URL zum übergeordneten Thema root dir
  • get_stylesheet_directory_uri() – URL zum get_stylesheet_directory_uri() Thema root dir
  • plugin_dir_path( __FILE___ ) – Wurzel der aktuellen Datei, egal ob im Child / Parent-Thema oder in einem Plugin. Nachgeschliffenes Ergebnis.
  • plugin_dir_url( __FILE__ ) – Wurzel der aktuellen Datei – in einem Plugin. Nachgeschliffenes Ergebnis.

PROTip: Verwendet den “file last modified time” / filemtime() , einen UNIX-Zeitstempel als Versionsnummer / Abfrage-Argument, um den Browser-Cache bei Bedarf zu durchbrechen.

Der Vorschlag von Pieter Goosen, die Plugins zu überprüfen, funktionierte für mich. Wurde von Fast Velocity Minify Plugin verursacht. Das Löschen des Cache funktionierte auch nicht, der einzige Weg, um es zu umgehen, war das Plugin zu deaktivieren und es wieder zu aktivieren, nachdem die Entwicklung abgeschlossen war.