2013-05-05 3 views
0

J'utilise un plugin de navigateur pour jQuery qui récupère le nom et la version du navigateur. De toute façon j'essaye d'afficher un message si l'utilisateur utilise un certain navigateur et/ou une certaine version. Voici ce que j'utilise:Instruction si Javascript avec ET et OU

if (($.browser.name == "msie" && $.browser.version <= "8.0") || $.browser.name == "safari" || $.browser.name == "opera") { 
    // Do something 
} 

Tout fonctionne correctement, sauf que l'erreur s'affiche dans IE9 et qu'elle n'est pas supposée l'être. Je veux l'afficher seulement si c'est la version 8.0 ou moins. Quel est le problème avec la déclaration?

Merci d'avance.

EDIT: J'utilise maintenant le $ .browser.versionNumber mais cela ne fonctionne toujours pas. Comme ceci:

if (($.browser.name == "msie" && $.browser.versionNumber <= "8") || $.browser.name == "safari" || $.browser.name == "opera") { 
    // Do something 
} 

$ .browser.versionNumber récupère un nombre. Dans ce cas, si j'utilise IE9, il va envoyer "9".

+0

montrez-nous le nom du plugin. – steo

+0

http://jquery.thewikies.com/browser/ – coldpumpkin

+2

Au moins, vous ne pouvez pas utiliser '<=' sur une chaîne '$ .browser.version <=" 8.0 "'. –

Répondre

3

Comme d'autres l'ont déjà dit, il n'y a pas d'opérateur <= défini sur les chaînes.

Il y a un opérateur <= sur les chaînes mais ce n'est pas celui dont vous avez besoin. Par exemple:

alert('2' <= '10'); // this yields false. 

La solution serait d'utiliser $.browser.versionNumber:

browser.versionNumber: La version du navigateur (note, comme un entier).

Comme ceci:

if (($.browser.name == "msie" && $.browser.versionNumber <= 8) || $.browser.name == "safari" || $.browser.name == "opera") { 
    // Do something 
} 
+1

<= est un opérateur défini pour les chaînes. Cela ne fonctionne tout simplement pas de la même manière que sur les nombres. –

+0

Cela a fonctionné. En utilisant versionNumber et en supprimant "" du 8 fait l'affaire. Merci. – coldpumpkin

+0

@StevenMoseley merci pour la correction, j'ai mis à jour ma réponse en conséquence. – SoonDead

3

noter que la comparaison des chaînes donne des résultats différents que la comparaison des nombres

$.browser.version <= "8.0" 

par exemple

"10.0" < "8.0" 

peut-être vous êtes seulement intrested dans le numéro de version majeure, vous pouvez ensuite utiliser parseInt pour extraire cette .

+0

J'utilise maintenant la chaîne versionNumber.Comment puis-je utiliser le parseInt? – coldpumpkin

-1

Vous ne devriez pas utiliser "< =" sur une chaîne:

if (($.browser.name == "msie" && $.browser.version <= 8) || $.browser.name == "safari" || $.browser.name == "opera") { 
// Do something 
} 
0

est-IE9 en cours d'exécution en matière de compatibilité et/ou en mode bizarreries sur votre site?

Cela peut induire le plugin en erreur en pensant que vous utilisez une ancienne version.

+0

Non. Si j'imprime le numéro de version, il affichera 9. – coldpumpkin

+1

Dans ce cas, vous devriez tester «<= 8» plutôt que «<=» 8 «' – Phylogenesis

Questions connexes