HTML - Navigateurs |
Dossier : Opéra 3.50, spécificités ou erreurs d'interprétations.
Bug de isNaN(), spécificité de for, inactivité de sort()
Fonction isNaN() incompatible. |
La fonction isNaN(), qui fait parti du langage de base du Javascript, permet de savoir si la valeur donnée en paramètre n'est pas un nombre : c'est-à-dire, si c'est une chaîne de caractères ou la valeur "NaN" (Not a Numeric). Elle retourne une valeur booléen (true ou false).
Les résultats sont les suivants :
isNaN('co')=true isNaN('c2')=true isNaN('2g')=true isNaN('83')=false isNaN(1/0=Infinity)=false isNaN(NaN=NaN)=true |
isNaN('co')=false isNaN('c2')=false isNaN('2g')=false isNaN('83')=false isNaN(1/0=NaN)=true isNaN(NaN=null)=false |
Nous voyons bien qu'Opéra renvoie des valeurs différentes ; en effet, seule "isNaN(1/0)" est vrai.
Il est intéressent, aussi, de remarquer que pour Opéra, "1/0" et "NaN" vaut "NaN" et "null", et pour les autres, "Infinity" et "NaN".
Plantage dans for |
La syntaxe de la boucle "for" et normalement la suivante :
for ([var] lst_init ; lst_test ; lst_op) code;
Où
lst_init est une liste d'initialisation de variable. Les éléments de la liste sont
séparés par une virgule.
lst_text est une liste de test devant tous être vérifiés pour que la boucle continue
lst_op est une liste d'opération effectués à la fin de la boucle, avant le test.
<Script
language="JavaScript"><!-- for (t=0,n=0;t<3,n>-2;t=t+1,n--) {document.write("t=",t," n=",n,"<br>");} //--></Script> |
Voici un exemple de programme
qui fonctionne sur IE et NS, mais pas sous Opéra.
<Script
language="JavaScript"><!-- n=0; for (t=0;(t<3)&&(n>-2);t=t+1,n--) {document.write("t=",t," n=",n,"<br>");} //--></Script> |
Opéra
n'accepte pas de liste dans les parties d'initialisation et de test ; nous devons
donc effectué l'initialisation des variables auparavant, et effectuer les tests
supplémentaires en une seul expression.
Méthode sort() inactif |
La méthode sort(), de l'objet Array, nous permet de trier un tableau : voir Javascript - Array -.sort().
<Script
language="JavaScript"><!-- document.write(Array().sort(),'<hr>'); function trie(a,b) {return (a < b)?1:-1;} var Tab = new Array('B','A','C'); document.write(Tab,"<hr>"); |
La
méthode sort() ne semble pas exister sous Opéra. Même si parfois elle n'a aucun effet,
la plus part du temps sont appel plante le navigateur (fatal error). Je vous invite à
effectuer le trie de vos tableaux vous même.
Dernière mise à jour : dimanche 06 janvier 2008 |