Javascript : Problème de longueur de chaine

Résolu/Fermé
fiofiojm Messages postés 86 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 16 juillet 2021 - 8 déc. 2009 à 00:24
fiofiojm Messages postés 86 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 16 juillet 2021 - 8 déc. 2009 à 20:51
Bonjour,

J'ai un problème en javascript :

Dans ma page il y a un cadre (frame) que j'ai nommé "photo". Dans ce cadre sont affichées différentes pages en fonction de la navigation. Pour pouvoir identifier l'url de la page en cours dans ce cadre j'ai utilisé l'instruction javascript suivante :

pagecadre = photo.location


Jusque là pas de souci, ça fonctionne. Mon site étant en local, l'instruction me retourne bien l'adresse exacte de la page en cours à savoir :

 file:///F:/00%20DONNEES/Mes%20sites%20Internet/gardiendutemps.org/galeries/spectacles/theatre/theatre001.htm


ensuite j'utilise l'instruction suivante pour déterminer la longueur de la chaine "pagecadre" :

longueur = pagecadre.length


Le problème commence alors dès cet instant. En effet, la variable "longueur" me retourne "indefined".
A partir de là je ne peux rien faire de ma chaine "pagecadre" et je ne peux notamment pas utiliser l'instruction "indexOf" qui plante le code puisque la longueur de la chaine est indéfinie.

Quelqu'un pourrait-il me dire pourquoi ce problème et quelle solution lui apporter ?

Merci d'avance.

Jean-Marc
A voir également:

1 réponse

fiofiojm Messages postés 86 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 16 juillet 2021 13
8 déc. 2009 à 20:51
Ca y est j'ai trouvé !

En fait l'instruction "Objet.location" renvoie une adresse sous la forme d'une chaine codée. Même si elle est lisible, elle n'est cependant pas interprétée comme une chaine de caractères, raison pour laquelle les propriétés de l'objet "String" tels que "Chaine.length" ou "Chaine.indexOf(Souschaine)" par exemple plantent le code.

Donc avant d'utiliser la chaine renvoyée par l'instruction Objet.location, il faut la décoder au moyen de l'instruction "decodeURI" :

var adresse = moncadre.location;
adresse = decodeURI(adresse);

Dès lors, la chaine sera bien interprétée comme une chaine de caractères et sera exploitable en tant que telle avec les différentes propriétés de l'objet String.

Je me suis bien fait ch... à comprendre cette subtilité !
Voilà.

A bientôt,
JM
0