549 votes

Comment vérifier quelle version de jQuery est chargée ?

Comment vérifier quelle version de jQuery est chargée sur la machine du client ? Il se peut que jQuery soit chargé sur le client, mais je ne sais pas comment le vérifier. S'il l'a chargé, comment puis-je vérifier la version et le préfixe tel que :

$('.class')
JQuery('.class')

2 votes

Le client peut avoir chargé jQuery si vous l'avez inclus dans un fichier à télécharger. Quel est le problème, exactement ?

1 votes

Je ne sais pas pour quoi le PO en a besoin, mais si vous faites un script ou un plugin qui nécessite jQuery, vous pourriez vérifier et lancer une erreur s'il n'est pas là ou une version trop ancienne.

1 votes

1021voto

Darin Dimitrov Points 528142
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}

38 votes

Il y a deux façons de vérifier la version de jquery actuellement chargée : jQuery.fn.jquery y jQuery().jquery (abréviations : $.fn.jquery $().jquery ). J'ai écrit sur en détail avec des liens vers le code source de Jquery si vous souhaitez creuser davantage.

3 votes

Une version encore plus simple if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }

8 votes

La vérification de l'absence de définition devrait être !==

37voto

Juhana Points 20999

Vous pouvez simplement vérifier si le jQuery existe :

if( typeof jQuery !== 'undefined' ) ... // jQuery loaded

jQuery().jquery contient le numéro de version.

Quant au préfixe, jQuery devrait toujours fonctionner. Si vous voulez utiliser $ vous pouvez envelopper votre code dans une fonction et passer jQuery en tant que paramètre :

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )

3 votes

Le site if( jQuery ) lancera une exception si jQuery est inconnu et ne fonctionnera pas.

0 votes

Peut-être l'envelopper dans try {...}catch(e){...} ?

2 votes

N'utilisez pas jQuery().jquery . Il crée un objet jQuery pour rien. (commentaire copié d'une autre réponse)

19voto

memeLab Points 1486

Juste parce que cette méthode n'a pas été mentionnée jusqu'à présent - ouvrez la console et tapez :

$ === jQuery

Comme @Juhana l'a mentionné ci-dessus $().jquery retournera le numéro de version.

0 votes

Quelque chose comme ($ === jQuery)?$().jquery:'no jquery';

1 votes

L'OP a demandé de vérifier la version chargée. Cela ne répond pas à la question.

17voto

J'ai trouvé que c'était le moyen le plus court et le plus simple de vérifier si jQuery est chargé :

if (window.jQuery) {
    // jQuery is available.

    // Print the jQuery version, e.g. "1.0.0":
    console.log(window.jQuery.fn.jquery);
}

Cette méthode est utilisée par http://html5boilerplate.com et autres.

0 votes

@AndreFigueiredo J'ai modifié la réponse pour inclure la façon d'obtenir le numéro de version, après m'être assuré que jQuery est chargé.

3voto

AlienWebguy Points 42370

Vous devriez en fait envelopper cela dans un bloc try/catch pour IE :

// Ensure jquery is loaded -- syntaxed for IE compatibility
try
{
    var jqueryIsLoaded=jQuery;
    jQueryIsLoaded=true;
}
catch(err)
{
    var jQueryIsLoaded=false;
}
if(jQueryIsLoaded)
{
    $(function(){
        /** site level jquery code here **/
    });
}
else
{
    // Jquery not loaded
}

0 votes

IE ne gère pas typeof jQuery != 'undefined' ? Est-ce vrai pour tous les IE ou seulement pour les plus anciens ?

0 votes

Je suis presque sûr que c'est pour les anciennes versions. Quoi qu'il en soit, quoi de plus embarrassant qu'une grosse erreur JS empêchant votre page de fonctionner, même si c'est la faute du navigateur ;)

0 votes

Cela m'a beaucoup aidé. Je me battais pour obtenir le comportement exact à travers Firefox et IE pour vérifier si jQuery est chargé ou non en utilisant WatiN. Maintenant, avec cette solution de contournement, je suis très heureux. Merci à vous !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X