Javascript : problème long mais réponse court

Fermé
Utilisateur anonyme - Modifié par Alexis-pires le 20/04/2010 à 05:56
 Utilisateur anonyme - 20 avril 2010 à 18:53
Salut à tous et à toutes,

Donc voici mes péripéties :

je créé un éditeur wysiwyg.
Celui ci se compose d'une frame, ou on écrit du texte qui le recompose immédiatement (le principe même de l'éditeur wysiwyg.

Ensuite lorsque j'appuie sur le bouton validant le formulaire je convertit ce qui avait dans la frame dans une texteaera que je cache avec du css. Et dans ma page php je récupère ce qu'il y a dans mon textaera. Simulation ^^ :

Frame : j'écris
J'appuie sur le bouton validant le formulaire ça convertit ma frame dans mon textaera pour que je puisse le récupérer dans un variable et l'enregistrer dans ma bdd via cette fontion :

function changer()    
{    
document.getElementById('code').value = document.getElementById("editeur").contentWindow.document.body.innerHTML;    
}


Mais comme je suis très compliqué je voudrais pouvoir modifier mes formulaires ^^ Alors je voudrais retrouver tout dans ma frame !

Donc je fais ça :

Je récupère mon texte dans la bdd et je l'affiche dans mon textaera qui est masqué et lorsque j'appuie sur un bouton ça lance cette fonction :

function rechanger()
{
document.getElementById("editeur").contentWindow.document.body.innerHTML = document.getElementById('code').value;
}

Et ma frame va prendre la valeur du textaera, ça marche parfaitement, je peux modifier mon texte ! Sauf que j'ai pas envies d'appuyer sur mon bouton pour voir mon texte

Alors au lieu de mettre un bouton et de faire : onclick="rechanger"

je met dans ma page :

<script> window.onload = rechanger; </script>


Sauf que comme ça, ça affiche bien ce qu'il y a dans la bdd mais je peux pas modifier alors que ça marche bien avec onload ! Auriez vous une solution pour palier à ce problème ? J'ai entendus parler de doclick mais je sais pas m'en servir !

Merci d'avoir pris du temps pour mon problème, j'en serait jamais assez reconnaissant !

La chance aide parfois, le travail toujours !
Le vrai con est con. Celui qui n'est pas un vrai con n'est pas plus con qu'un autre.
A voir également:

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 avril 2010 à 09:30
document.getElementById('code').value = document.getElementById("editeur").contentWindow.document.body.innerHTML;


bizarre comme madressage tu mélanges le get element by id avec l'adresage par objets windows


document.getElementById('code').value = document.getElementById("editeur").innerHTML; 
0
Utilisateur anonyme
20 avril 2010 à 18:52
ben je vais testé ça mais je pense pas que ça résous mon problème ! Merci à vous deux =)
0
Absinthe06 Messages postés 102 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 7 juillet 2010 11
Modifié par Absinthe06 le 20/04/2010 à 11:17
je pense que tu peux jouer sur un timeout dans ta fonction "rechanger()" :

function rechanger() 
{ 
document.getElementById("editeur").contentWindow.document.body.innerHTML = document.getElementById('code').value; 
setTimeout ("rechanger()", 1000);  
} 


avec un petit
<body onload="rechanger()">.....</body>


de cette manière, ta fonction "rechanger()" est appelée dès l'affichage de ta page, et elle s'exécutera de manière automatique toutes les secondes, se chargeant ainsi d'actualiser en permanence ta frame ;)

Je vois pas d'autre solutions sinon...

EDIT : suis-je bête, en fait SI, y'a une autre solution, et beaucoup plus simple en plus : appelle ta fonction "rechanger()" dans ton textarea par un "onKeydown".....

"Un con qui roule va plus loin qu'un intellectuel assis..."
Absinthe, game designer, graphiste, et webmaster à ses heures perdues...
0
Utilisateur anonyme
20 avril 2010 à 18:51
Justement je veux qu'il ne le fait qu'une fois ! Car je veux pouvoir modifier, si je le fais rafraichir il va me remettre les valeur de la bdd ! Et onkeydown c'est quand on aapuis sur une touche, et encore une fois à chaque lettre tapé ça va m'annulé le truc et me remettre ce qu'il y a dans la bdd.
0
Utilisateur anonyme
20 avril 2010 à 18:53
Un autre question : J'ai essayé en faisant echo dans une frame mais ça marche pas, c'est normal, non ?
0