La fonction SPLIT (string) ne fonctionne pas sur MAC

darb66 Messages postés 36 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 23 juin 2008 - 27 juil. 2006 à 15:10
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 28 juil. 2006 à 05:52
Hello,

Je developpe une petite fonctionnalite en utilisant la fonction split(string, char) pour pouvoir formater un texte et l'afficher avec la fonction confirm(string, param). Ca fonctionne tres bien sur Windows (Internet Explorer et FireFox), mais il semblerait que la fonction split ne soit pas compatible avec Mac, du moins sur IE...

Est-ce que quelqu'un aurait une solution pour contourner ce probleme ? Je sais deja que certain me repondrons de n'utiliser que FF ... N'y aurait-il pas d'autres methodes ?

Merci,
fd

5 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juil. 2006 à 15:39
bonjour,

   faire ça "à la main".
   ( s'il est vrai que ça ne fonctionne pas sous Mac ! )

   : une boucle avec indexOf et substr

   et pour ceux qui diraient d'utiliser FF, répond leur 
   que tu va leur envoyer le mail des 80% personnes qui 
   se connectent sur ton site pour qu'ils puissent les
   convaincre de changer de navigateur.
   déjà avec moi, ce sera un refus.

cordialement   Bul   
Site
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juil. 2006 à 16:19
tiens...
j'ai fait un ch'tit exemple,
( pas testé à fond, sûrement à fignoler,optimiser... )
séparateur quelconque ( plusieurs caractères possibles )
ici mis ;




<script type="text/javascript">
function Eclate(zone,separ)
{
 var debut=0;
 var indice=0;
 var retour=new Array;
 var tmp=zone;
 if (tmp.substr(tmp.length)!=separ)
 {
  tmp+=separ;
 }
 var fin=tmp.indexOf(separ,0);
 while ( fin>0 )
 {
  retour[indice]=tmp.substr(debut,fin-debut);
  debut=fin+separ.length;
  indice++;
  fin=tmp.indexOf(separ,debut);
 }
 return retour;
}






// exemple d'utilisation





 var euh=Eclate("a;bb;ccc;dddd",";")
 alert ( euh.length );
 for ( var n=0;n<euh.length;n++ )
 { 
  alert( n+" = "+euh[n]);
 }
</script>


cordialement   Bul   
Site
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 juil. 2006 à 16:27
et déjà un ch'ti bug...

      mettre    if (tmp.substr(tmp.length-separ.length+1)!=separ)

et ça ira mieux ( si séparateur > 1 caractère )

cordialement   Bul   
Site
0
darb66 Messages postés 36 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 23 juin 2008
27 juil. 2006 à 18:48
Hello,
Merci pour cette fonction... Ca marche parfaitement bien! Probleme suivant: la methode confirm() ne fonctionne pas de la meme maniere sur Mac IE, a savoir le message a afficher est remplace par 'NO'... Si tu as une idee...

fd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 juil. 2006 à 05:52
>>Ca marche parfaitement

pas d'accord :
il faut mettre    if (tmp.substr(tmp.length-separ.length)!=separ)

avec une question existencielle, si le champ de départ
se termine par un séparateur, c'est pour finir le dernier
champ ou parce que le dernier champ est vide ?
je m'explique :
a;bb; doit donner [0]=a [1]=bb
               ou [0]=a [1]=bb [2]=rien
tel que c'est fait ici, c'est la 1ère réponse,
qui peut ne pas convenir.

>> le message a afficher est remplace par 'NO'
pas compris le problème.

cordialement   Bul   
Site
0
Rejoignez-nous