Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug sur Firefox 1.5 avec Javascript asynchrone

5 réponses
Avatar
Stéphane Santon
Bonjour,

Je me demande si je ne suis pas tombé sur un bug...

J'utilise XmlHttpRequest et un JavaScript de retour qui remplit mes
INPUTs.

Voici donc ma page en tout début de construction :
http://enselec.team-santonum.com/applis/suivance/es-request.php
(non prévue pour IE, seulement pour Firefox)

Dans Les entreprises | Raison sociale, tapez 3 lettres.
La liste est mise à jour.

Maintenant sélectionnez diverses entrepises dans la liste par un clic,
les champs sont mis à jour dans "Cette entreprise".

Vous pouvez utiliser l'inspecteur DOM pour voir les attributs "value"
qui changent en live.

En bas, dans la cellule id='debug' vous avez un aperçu de la variable
retournée par la requete XmlHttp (les noms de champs de la BdD et leurs
valeurs).

OK.

Maintenantle pb :
Lorsqu'une entreprise est sélectionnée, les INPUTs remplis,
et que je saisis qq caractères dans un des INPUT, cet INPUT n'est plus
mis à jour quand on sélectionne une autre entreprise !!
J'ai vérifié et revérifié, son id n'est pas modifié.

En plus ! ... dans l'inspecteur DOM, je vois bien le noeud dont
l'attribut "value" change, mais l'affichage de ce champ reste figé !!

Sous Opera, ça marche correctement, le champ INPUT est bien mis à jour.

Alors ça ! ...

5 réponses

Avatar
ASM
Bonjour,

Je me demande si je ne suis pas tombé sur un bug...


Non, pas vraiment,
il suffit d'être clair dans les ordres qu'on intime à son JS.

soit : monChamp.value = maNvelleValeur;
monTextarea.value = variableMonTexte;

et non pas un truc sofistiqué d'attribution d'attribut

monChamp.setAttribute('value', uneValeur);


http://enselec.team-santonum.com/applis/suivance/es-request.php
(non prévue pour IE, seulement pour Firefox)


Tu veux dire que le XMLHttpRequest n'est pas prévu pour IE ?
car le JS a l'air d'être OK
(si tu te limites au JS "de base" cf : ci-dessus)

--
ASM

Avatar
Stéphane Santon
Bonjour,

Je me demande si je ne suis pas tombé sur un bug...


Non, pas vraiment,
il suffit d'être clair dans les ordres qu'on intime à son JS.
soit : monChamp.value = maNvelleValeur;
monTextarea.value = variableMonTexte;

et non pas un truc sofistiqué d'attribution d'attribut
monChamp.setAttribute('value', uneValeur);


Pour moi c'est tout à fait clair.
Si l'attribut 'value' d'un input[type='text'] dans l'inspecteur DOM
renvoie une valeur, celle-ci doit être affichée dans la zone de saisie
correspondante.

http://enselec.team-santonum.com/applis/suivance/es-request.php
(non prévue pour IE, seulement pour Firefox)


Tu veux dire que le XMLHttpRequest n'est pas prévu pour IE ?


Je veux dire qu'en l'état actuel de présentation, ça ne marche pas de
manière satisfaisante sous IE, mais que ce n'est pas mon objectif.


Avatar
ASM
Bonjour,

http://enselec.team-santonum.com/applis/suivance/es-request.php
(non prévue pour IE, seulement pour Firefox)


Tu veux dire que le XMLHttpRequest n'est pas prévu pour IE ?


Je veux dire qu'en l'état actuel de présentation, ça ne marche pas de
manière satisfaisante sous IE, mais que ce n'est pas mon objectif.


Bon, cool.
Paske sinon j'avais peut-être trouvé une rustine pour IE.

--
ASM



Avatar
ASM

Pour moi c'est tout à fait clair.
Si l'attribut 'value' d'un input[type='text'] dans l'inspecteur DOM
renvoie une valeur, celle-ci doit être affichée dans la zone de saisie
correspondante.


Ça je ne sais pas, la valeur de l'attribut est peut-être dans le DOM
(virtuel) mais peut-être FireFox prévoit que la valeur de l'élément du
form soit prioritaire ?

et en faisant :
// suppression de la valeur (pas de l'attribut 'value')
monChamp.removeAttribute("value");
monChamp.setAttribute('value', uneValeur);

ou plus catégorique :
// suppression de l'attribut 'value'
monChamp.removeAttributeNode(monChamp.attributes[1]);
monChamp.setAttribute('value', uneValeur);

est-ce que ça finirait par convaincre FF ?
car, enfin, 'set' ne veut pas dire 'replace'

Bien que je continue à penser que l'arbre des forms est compétitif sur
ce coup (et au moins c'est compris par tous les navigateurs, même anciens).

Avatar
ASM
il suffit d'être clair dans les ordres qu'on intime à son JS.
soit : monChamp.value = maNvelleValeur;
monTextarea.value = variableMonTexte;

et non pas un truc sofistiqué d'attribution d'attribut
monChamp.setAttribute('value', uneValeur);


Pour moi c'est tout à fait clair.
Si l'attribut 'value' d'un input[type='text'] dans l'inspecteur DOM
renvoie une valeur, celle-ci doit être affichée dans la zone de saisie
correspondante.


voir :
http://www.mozilla-europe.org/fr/products/firefox/features/
paragraphe : Restauration de Session

qui pourrait expliquer le pourquoi du comment