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

Probleme dans l'initialisation d'une page

2 réponses
Avatar
Soon
Bonjour à tous,

Je développe une application coté client uniquement. Le but simple est
d'avoir un formulaire pour ajouter des données dans un document XML. La
page contient donc un formulaire et l'affichage du document XML en cours.

Lors de l'ouverture de la page, un script d'initialisation ouvre un
document "template" et le garde en mémoire sous forme d'une variable
javascript. Ensuite le script d'initialisation affiche le document via
une fonction utilisant innerHMTL.

Lors d'un submit sur le formulaire. Un script ajoute les données au
document xml et met a jour l'affichage toujours via la même fonction
utilisant innerHTML.

Problème: Lorsque j'exécute, le script ajoute bien la règle au document.
Met bien à jour l'affichage mais dessuite après réinitialise le
document. Il semble que javascript re-exécute la fonction
d'initialisation. Pourquoi ?

Comment est-il possible d'écrire une fonction qui ne sera exécuté qu'une
seule fois lors du chargement du document et pas lors d'une simple mise
a jour via innerHTML.

Au fait, le problème est le même sous Firefox ou IE.

Merci d'avance de vos lumières.

-- Thierry

2 réponses

Avatar
ASM
Bonjour à tous,

Je développe une application coté client uniquement. Le but simple est
d'avoir un formulaire pour ajouter des données dans un document XML. La
page contient donc un formulaire et l'affichage du document XML en cours.

Lors de l'ouverture de la page, un script d'initialisation ouvre un
document "template" et le garde en mémoire sous forme d'une variable
javascript. Ensuite le script d'initialisation affiche le document via
une fonction utilisant innerHMTL.


Bon, voilà où peut-être ce n'est pas top (innerHTML) ?
http://www.quirksmode.org/dom/innerhtml.html
Mais il paraît que cette phase fonctionne
(peut-être seulement en apparence ?)

Lors d'un submit sur le formulaire. Un script ajoute les données au
document xml et met a jour l'affichage toujours via la même fonction
utilisant innerHTML.


C'est trop vague comme explication.
On innerHTMLe quoi ?
- une valeur d'input ?
- toute une ligne (<p>bla<tag>bl</tag>a</p>) ?
- plus encore ?
Ca ne recompose pas toute la page pour la re-afficher tout de même ?

Problème: Lorsque j'exécute, le script ajoute bien la règle au document.


Au html affiché ?

Met bien à jour l'affichage mais dessuite après réinitialise le
document. Il semble que javascript re-exécute la fonction
d'initialisation. Pourquoi ?


Ququ'un a du lui demander qque part, certainement. ! ?

Ce serait-y pas lors du submit ?
Il faut l'annuler (sauf si donnée à envoyer au serveur) !

<form action="blabla" onsubmit="return false;">
ou
<form action="blabla" onsubmit="return monBazarXml();">

La fonction monBazarXml() devra renvoyer false en fin d'exe.

Comment est-il possible d'écrire une fonction qui ne sera exécuté qu'une
seule fois lors du chargement du document et pas lors d'une simple mise
a jour via innerHTML.


A mon idée, l'insertion côté client via innerHTML ou appendChild n'a pas
à recharger la page.
à tous les coups c'est le submittage qui fait ça.

Au fait, le problème est le même sous Firefox ou IE.

Merci d'avance de vos lumières.

-- Thierry



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Soon
Bonjour à tous,

[...]


Bon, voilà où peut-être ce n'est pas top (innerHTML) ?
http://www.quirksmode.org/dom/innerhtml.html
Mais il paraît que cette phase fonctionne
(peut-être seulement en apparence ?)


Elle marche parfaitement. J'avais vu sur le net que innerHTML n'était
pas génial mais sans trop voir d'explication. Ton lien a des bonnes
explications. Merci.


[...]


C'est trop vague comme explication.
On innerHTMLe quoi ?
- une valeur d'input ?
- toute une ligne (<p>bla<tag>bl</tag>a</p>) ?
- plus encore ?
Ca ne recompose pas toute la page pour la re-afficher tout de même ?


Non juste d'un élément div dans le body. Cet élément div est un petit
rectangle dans la page censé affiché le code XML

[...]


Ququ'un a du lui demander qque part, certainement. ! ?

Ce serait-y pas lors du submit ?
Il faut l'annuler (sauf si donnée à envoyer au serveur) !

<form action="blabla" onsubmit="return false;">
ou
<form action="blabla" onsubmit="return monBazarXml();">

La fonction monBazarXml() devra renvoyer false en fin d'exe.


Voila l'astuce ! J'ai donc simplement renvoyé false a la fin de ma
fonction gérant le submit et ça marche maintenant.


[...]


A mon idée, l'insertion côté client via innerHTML ou appendChild n'a pas
à recharger la page.
à tous les coups c'est le submittage qui fait ça.


Bien vu ! Merci beaucoup pour ton aide.