OVH Cloud OVH Cloud

Différence IE et Mozilla

3 réponses
Avatar
Guy
Bonjour,

le code suivant :

if (T_act.indexOf(tpar[0].substr(5)) != -1) {
clas="B";
}

fonctionne sous Mozilla et comporte une rreur sous IE(le script s'arréte)
evidement T_act et tpar[0].substr(5) sont correctement définis.

si vous avez une idée !
Merci
G

3 réponses

Avatar
Guy
Bonjour,

le code suivant :

if (T_act.indexOf(tpar[0].substr(5)) != -1) {
clas="B";
}

fonctionne sous Mozilla et comporte une rreur sous IE(le script s'arréte)
evidement T_act et tpar[0].substr(5) sont correctement définis.



le pb venait du type d'objet de T_act

T_act est un Array => IE ne sait pas (Netscape non plus)
Merci

Avatar
YD
if (T_act.indexOf(tpar[0].substr(5)) != -1) {
clas="B";
}
fonctionne sous Mozilla et comporte une rreur sous IE(le script s'arréte)
evidement T_act et tpar[0].substr(5) sont correctement définis.


le pb venait du type d'objet de T_act

T_act est un Array => IE ne sait pas (Netscape non plus)


Certes mais la norme (ECMA-262 3e éd.) dit :

<cite>
The indexOf function is intentionally generic;it does not
require that its this value be a String object. Therefore,
it can be transferred to other kinds of objects for use as
a method.
</cite>

ce qui signifie que indexOf peut être transféré à d'autres
types d'objet comme une méthode.

Appliqué à ton cas, il suffit d'ajouter cette ligne dans le
script :

Array.prototype.indexOf=String.prototype.indexOf;

et le tour est joué.

Le JS devant T_act.indexOf(tpar[0].substr(5)) effectuera ceci :

T_act.toString() --> transforme en chaîne les différents
éléments de l'Array séparés par des virgules ;
recherche de la chaîne de recherche dans la chaîne résultante.

Exemple :

var a=['un','beau','jour','ou','peut-être','une','nuit'];

Array.prototype.indexOf=String.prototype.indexOf;

document.write(a.toString() + "<br>");
document.write(a.indexOf('ou'));

Cela évitera de fouiller l'Array par une boucle. Pour être sûr
du résultat, il vaut mieux que la cha$ine de recherche ne
contienne pas de virgule...

--
Y.D.


Avatar
Guy