Passer une variable entre deux composants...

Signaler
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010
-
Messages postés
1732
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 mars 2015
-
Salut.
Je repète un différent post qui n'a pas eu de réponse. Mais c'est vraiment important et très urgent. Si quelqu'un voit une soltion à mon problème, même peu vraisemblable, j'merai qu'il m'en fasse part.
Merci d'avance. Voici mon message :

Je me permets de vous écrire suite à un problème survenu lors de la création d'un éditeur wysiwyg. Tout est ok côté éditeur. Mais dès que je veux envoyer les variables via un formulaire, tout ce complique. J'utilise la célèbre technique de transfère de texte html de l'iframe à une textarea.
Le principe, pour ceux qui l'ignorent est de prendre le texte et sont formatage (avec les balises) dans BODY de l'iframe et de le transférer dans une textarea invisible.
Et malheureusement, c'est là que ça coince.
Le texte ne se transfère pas de l'iframe à la textarea.
Le plus simple est que je vous donne mon code :

Dans l'html :
"editeur" width= "400px" height="300px">

<form name="form2" method="POST" action="reception.php" onSubmit="acquerir()">
<textarea id="editeur_contenu" name="html" style="display:none
"></textarea>

</form>

dans le .js :
function acquerir () {
if (Nom == 'Microsoft Internet Explorer'
) {
iframe = window.frames [ 'editeur'].document;
document.getElementById('editeur_contenu').value = iframe.body.innerHTML
}else{
iframe = document.getElementById ( 'editeur').contentDocument;
document.getElementById('editeur_contenu').value = iframe.body.innerHTML
}
}

J'ai fait des tests en affichant bel et bien la textarea, et celle-ci ne prend pas la valeur de la iframe.

Si quelqu'un a une solution, je serai comblé. Là je tombe de sommeil, je cherche depuis 4 [maintenant 27] heures.

Merci d'avance à tous.


Je précise que la variable Nom est définie par :
Nom = navigator.appName;
dans une fonction d'initialisation lancée par onLoad dans BODY.
Merci d'avance...

11 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
je serais curieux de voir le code de ton éditeur, je n'ai jamais réussi
à décortiquer des wysiwygs, généralement, les bons enlèvent les
commentaires et les mauvais ne sont pas compatibles mozilla...


j'aimerais savoir si ça marche avec IE ou Mozilla ...


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

En fait, mon éditeur marche très bien avec IE et Mozilla. D'ailleurs, il marche mieux sur FireFox que sur IE...
La gestion de la taille des images durant leur modification, l'affichage des fonts dans une liste, tout ça fait que mozilla est bien meilleure pour le traitement des fonctions qui au départ étaient crées pour le <!--StartFragment -->
MSHTML. Mais passons. En faiit, ça marche parce-que je défini au départ une variable, non comme il suit :
Nom = navigator.appName;

Puis, je blinde le code d'hypothèses en if. Pour chaque fonction différente. Un extrait, pour changer le couleurs :

function changerCouleur (couleurH) {
if (Nom == 'Microsoft Internet Explorer' ) {
frameTexte = window.frames['editeur'];
frameInt = frameTexte.document;
frameInt.execCommand ( "ForeColor", false, couleurH);
frameTexte.focus();
}else{
frameTexte = document.getElementById('editeur').contentWindow;
frameInt = document.getElementById('editeur').contentDocument;
frameInt.execCommand("ForeColor", false, couleurH);
frameTexte.focus();
}
}

Voilà. Je pense que si tu t'es déjà un peu intéressé au wysiwyg, tu dois tout comprendre. Si tu as des questions, n'hésite pas.
Sinon, personne a une solution pour mon problème ? ça devient vraiement urgent là...
@+ !
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Et ton bout de code pour envoyer le code dans l'iframe, il ne marche ni avec Mozilla, ni avec IE ???



Je me suis interessé aux wysiwygs, mais c'était tellement compliqué que
j'ai finit par faire du BBcode avec prévisualisation on temp réel...



si tu pouvais me passer le code entier, franchement, je suis vraiment interessé...



In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

Salut.
Mon éditeur fonctionne bien sur IE6, sur Mozilla et Netscape 7.0.
Voilà le code en entier. C'est un vrai bordel, mais c'est en construction et vraiment pas optimisé.
Si tu as la moindre question, hésite pas.


//JavaScript Document


//editeur wysiwyg


//par WhiteMagus


//Aucune copie de ce code ou d'une quelconque de ses partie n'est autorisé


//éditeur créé exclusivement pour les application qu'en fait BlackNight su Flash_Nouvelle





// ça c'est pour les caluqes contenant les couleurs et les smileys.


function afficher(id, id2, id3) {


if (document.getElementById(id).style.visibility=="visible") {


document.getElementById(id).style.visibility="hidden";


}else{


document.getElementById(id).style.visibility="visible";


document.getElementById(id2).style.visibility="hidden";


document.getElementById(id3).style.visibility="hidden";


}


}





// c'est pour transmettre la valeur de la iframe à une textArea. C'est là que ça marche pas, si ça intéresse encore quelqu'un ;)


function acquerir () {


Nom = navigator.appName;


if (Nom == 'Microsoft Internet Explorer') {


iframe = window.frames['editeur'].document;


document.getElementById('editeur_contenu').value = iframe.body.innerHTML


}else{


iframe = document.getElementById('editeur').contentDocument;


document.getElementById('editeur_contenu').value = iframe.body.innerHTML


}


}





//on rend l'iframe éditable. dans le html, on a


// on met aussi le texte à un format prédéfini...


// scusez, c'est pas très présentable, mais je suis en plein développement là...


function initialisation () {


Nom = navigator.appName;


if (Nom == 'Microsoft Internet Explorer') {


iframe = window.frames['editeur'].document;


iframe.designMode = 'On';


}else{


iframe = document.getElementById('editeur').contentDocument;


iframe.designMode = 'On';


}




if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("LiveResize", false);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("LiveResize", false);


ewin.focus();


}




if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("FontName", false, "Arial");


iframe.execCommand("FontSize", false, "2");


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("FontName", false, "Arial");


iframe.execCommand("FontSize", false, "2");


ewin.focus();


}


}


/* dsl, mais à partir de là, les fonctions vont beaucoup se répéter


c'était surtout pour voir si elles marchaient individuellement, j'optimiserai plus tard


*/


function changerString (action, bool, string) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand(action, bool, string);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand(action, bool, string);


ewin.focus();


}


}


function changer (action) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand(action, false, null);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand(action, false, null);


ewin.focus();


}


}





function changerPolice () {


var police = document.taille.select2.value;


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("FontName", false, police);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("FontName", false, police);


ewin.focus();


}


}





function changerTaille () {


var taille = document.taille.select3.value;


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("FontSize", false, taille);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("FontSize", false, taille);


ewin.focus();


}


}





function changerCouleur (couleurH) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("ForeColor", false, couleurH);


ewin.focus();


document.getElementById('couleurTexte').style.visibility="hidden";


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("ForeColor", false, couleurH);


ewin.focus();


document.getElementById('couleurTexte').style.visibility="hidden";


}


}





function changerFond (couleurF) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("BackColor", false, couleurF);


ewin.focus();


document.getElementById('couleurFond').style.visibility="hidden";


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("BackColor", false, couleurF);


ewin.focus();


document.getElementById('couleurFond').style.visibility="hidden";


}


}





function changerURL () {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("CreateLink", true);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("CreateLink", true);


ewin.focus();


}


}


function image (chemin) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


iframe.execCommand("InsertImage", false, chemin);


ewin.focus();


iframe.execCommand("InsertImage", false, chemin);


document.getElementById('smiley').style.visibility="hidden";


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


iframe.execCommand("InsertImage", false, chemin);


ewin.focus();


document.getElementById('smiley').style.visibility="hidden";


}


}





/* en construction, ça permet de voir si le texte a un quelconque format puis je vais


faire en sorte que les boutons prennent une paparence spéciale selon la présence du style


qu'elles représentent*/


function verifier (commandeD, objetID) {


if (Nom == 'Microsoft Internet Explorer') {


ewin = window.frames['editeur'];


iframe = ewin.document;


statut=iframe.queryCommandState(commandeD);


ewin.focus();


}else{


ewin = document.getElementById('editeur').contentWindow;


iframe = document.getElementById('editeur').contentDocument;


statut=iframe.queryCommandState(commandeD);


ewin.focus();


}


if (statut) {




}


}



J'ai pas eu le courage de tout mettre en forme...

Bon, @+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>Mais dès que je veux envoyer les variables
>>via un formulaire, tout ce complique.

je confirme que du coté client ça "commence
à fonctionner", y compris le transfert de l'iframe
vers le textarea ( enfin avec Internet Explorer,
pas regardé avec d'autres navigateurs,
il suffit de ne pas cacher le textarea pour voir )
même si on n'a pas toutes les billes...

le problème est-il dans reception.php ?

Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

Ben en fait, je comprend plus là... Moi c'est le passage qui s'effectue pas...
Si bien sous IE que sous FireFox ou Netscape. J'ai rendu la textarea visible, j'ai fait déclencher la fonction par un autre bouton, pour que j'aie le temps de voir, mais j'ai jamais vu la textarea avec du texte dedans.
C'est vraiment étrange.
Merci de ta réponse, je vais me relancer dans des tests plus approfondis.
@+ !
Messages postés
1732
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 mars 2015
2
Petit message :
http://flash-nouvelle.no-ip.org

Pour ceux qui voudrais voir l'éditeur mis en oeuvre par WhiteMagus (uniquement sur le forum de la v.3, exclusif IE)



Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusive IE)
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

Lol... Un peu de pub an passant

Sérieusement, Flash_nouvelle est encore un site en expension mais nous lui réservons un bon avenir, et si le nombre de membres actifs augmentent, ça serait carrément un coup de pied au c** pour nous, et ça nous pousserai à le déployer beaucoup plus vite.

@+ !

http://flash-nouvelle.no-ip.org/

_________________________________________________________
Messages postés
135
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
5 février 2008

j'aimerais savoir si t'a terminé ton editeur WYSIWUG et si c le cas si possible me donner une adresse pour voir une demonstration parce que cet adresse http://flash-nouvelle.no-ip.org/  me rederige vers l'adresse http://blacknight91.free.f et je le trouve pas labas.
merci
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

http://www.blog.flash-nouvelle.com/lect.php?i=7

Ce n'est qu'un exemple allégé, mais on fournira une version massive (en préparation pour les fonctionnalités supérieures) sur la version 4 du site pour des posts de tutoriels...

Amuse toi bien !

@+ !
Messages postés
1732
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 mars 2015
2
Sur http://blacknight91.free.fr/Flash_nouvelle/ il faut s'y rendre avec internet Explorer et se rendre sur le forum du site après s'être identifier pour voir apparaitre l'éditeur de WhiteMagus.


Avec Firefox ou autre navigateur, la version RedFog (v.3) n'est pas accessible.


 


Toutefois patiente, la version 4 arrive !


 


En atendant :



http://www.blog.flash-nouvelle.com/








Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusiv