web-dev-qa-db-fra.com

Pourquoi javascript ne fonctionne-t-il que s'il est connecté?

J'essaye d'implémenter un script simple:

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

Cela fonctionne parfaitement lorsque l'utilisateur est connecté à WP. Pour les utilisateurs réguliers, le script est chargé dans le pied de page mais ne fait rien.

J'ai aussi cette erreur de la console:

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

PD: J'ai utilisé wp_enqueue_script dans mon functions.php comme je le fais avec n'importe quel autre js externe:

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' );
1
Ecovirtual

Essayer:

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

Il est possible que jQuery ne soit pas mis en file d'attente et que vous ne le déclariez pas comme une dépendance de votre script. Être connecté, met automatiquement en file d'attente jQuery.

EDIT: Le journal de la console dit jQuery is not defined. Avez-vous ajouté une fonction jQuery(document).ready($) pour les fonctions fixed-menu.js?

0
Ciprian

La suggestion de Pieter Goosen de vérifier les plugins a fonctionné pour moi. A été causé par Fast Velocity Minify plugin. Effacer le cache n'a pas fonctionné non plus, la seule façon de le contourner était de désactiver le plug-in et de le réactiver une fois le développement terminé.

0
danlynn

CDN, ressources distantes et requêtes inter-origines

Vous voudrez peut-être remplacer le http: pour vos CDN en premier. Il se peut qu’il y ait des problèmes de demande d’origine croisée lorsqu’on l’utilise L'omission du protocole permet au navigateur de choisir le bon protocole en fonction de la situation. Le protocole corrigé est souvent un problème dans Chrome - le "parent surprotecteur".

Injection de dépendancelumière en JavaScript

En dehors de cela, vous pouvez toujours tester si une dépendance est chargée. Cela peut être fait facilement en le vérifiant dans une fonction à invocation automatique et en le connectant à la console:

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

Cela signifie que vous obtiendrez l'objet jQuery complet enregistré ou, si le chargement a échoué suffisamment tôt, l'objet {}/empty. Si tel est le cas, alors vous pouvez utiliser ce que @Ciprian a suggéré: Ajoutez votre dépendance lors de l'enregistrement/de la mise en file d'attente de votre script:

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

Vous voudrez peut-être utiliser l’une des fonctions suivantes pour votre URL/Chemin - dump au cas où vous ne savez pas exactement ce que vous obtiendrez.

  • get_template_directory() - Chemin vers le répertoire racine du thème parent
  • get_stylesheet_directory() - Chemin vers le répertoire racine du thème enfant
  • get_template_directory_uri() - URL du répertoire racine du thème parent
  • get_stylesheet_directory_uri() - URL du répertoire racine du thème enfant
  • plugin_dir_path( __FILE___ ) - Racine du fichier actuel, que ce soit dans un thème enfant/parent ou dans un plugin. Résultat final tronqué.
  • plugin_dir_url( __FILE__ ) - Racine du fichier actuel - dans un plugin. Résultat final tronqué.

PROTip: Ceci utilise "l'heure de la dernière modification du fichier"/filemtime(), un horodatage UNIX en tant que numéro de version/argument de requête pour percer le cache du navigateur à la demande.

0
kaiser