begin process at 2012 05 29 13:27:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

Passer une variable entre deux composants...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passer une variable entre deux composants...

dimanche 3 juillet 2005 à 12:59:33 | Passer une variable entre deux composants...

WhiteMagus

Membre Club
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 :
<iframe id="editeur" width="400px" height="300px"></iframe><br>
<form name="form2" method="POST" action="reception.php" onSubmit="acquerir()">
<textarea id="editeur_contenu" name="html" style="display:none
"></textarea>
<input type=
"submit" name="Submit" value="Envoyer">
</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...


sigFlash.gif

halo1.gif

dimanche 3 juillet 2005 à 23:26:50 | Re : Passer une variable entre deux composants...

coucou747

Administrateur CodeS-SourceS
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

[ Lien ]
dimanche 3 juillet 2005 à 23:52:30 | Re : Passer une variable entre deux composants...

WhiteMagus

Membre Club

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 
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à...
@+ !

sigFlash.gif

halo1.gif

lundi 4 juillet 2005 à 09:20:39 | Re : Passer une variable entre deux composants...

coucou747

Administrateur CodeS-SourceS
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

[ Lien ]
lundi 4 juillet 2005 à 20:03:48 | Re : Passer une variable entre deux composants...

WhiteMagus

Membre Club

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 <body onLoad="initialisation()">

// 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, @+

sigFlash.gif


halo1.gif

mardi 5 juillet 2005 à 10:45:18 | Re : Passer une variable entre deux composants...

bultez

Membre Club


>>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~~Mail~

mardi 5 juillet 2005 à 19:48:16 | Re : Passer une variable entre deux composants...

WhiteMagus

Membre Club

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.
@+ !

sigFlash.gif


halo1.gif

mardi 11 avril 2006 à 23:19:40 | Re : Passer une variable entre deux composants...

Blacknight91titi

Membre Club
Petit message :
[ Lien ]

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)
vendredi 14 avril 2006 à 22:10:48 | Re : Passer une variable entre deux composants...

WhiteMagus

Membre Club

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/

_________________________________________________________

Sig Naruto - n°17

jeudi 28 septembre 2006 à 17:55:01 | Re : Passer une variable entre deux composants...

gatita_dev

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 [ Lien ]  me rederige vers l'adresse [ Lien ] et je le trouve pas labas.
merci

1 2

Cette discussion est classée dans : textarea, iframe, document, editeur, body


Répondre à ce message

Sujets en rapport avec ce message

wysiwyg - envoi de texte formaté à php [ par WhiteMagus ] Bonjour (eh oui, c'est déjà le matin).Je me permets de vous écrire suite à un problème survenu lors de la création d'un éditeur wysiwyg. Tout est ok c Hauteur Automatique sur un Object ( pas Iframe ) pour WC3 [ par Fireflect ] Bonjours tt le monde voila j'essaye de faire une page avec un objet utilisé comme une Iframe..j'aimerai que l'Iframe et que la page s'ajuste en foncti Redimensionnement auto iframe en largeur - pb sous FireFoX [ par pico_rasta ] J'utilise 2 codes javascript différents pour le redimensionnemenent automatique d'une iframe dans un page :sous IE :document.all[frame].style.height = Accéder au contenu d'une iframe [ par pcmanprogrammeur ] Bonjour !!!J'ai créé une page qui contient une iframe. Le problème est que je n'arrive pas à faire afficher le contenu d'un champ de l'iframe. Voici q mettre des js pour recuperer une valeur de variable en fonction de la resolution ! [ par frvfrvfrvfrv ] salut aux javascripteurs !j'ai vu un script qui permet de changer un fichier css en fonction du navigateur.le voici : HTML<FONT face bug sous firefox [ par freija ] Bonjour, Pour faire un site internet on m'a fourni une base. Mon index se présente sous la forme d'un tableau avec sur une ligne un menu flash, et un transfert données textarea vers iframe (xmlhttprequest) [ par David_monchy ] Bonjour à tous,En ce moment, je crée un chat, et je suis confronté à un gros problème:j'utilise la méthode xmlhttprequest, pour éviter le "clignotemen Textarea et Javascript [ par Slyders ] Voila j'ai un petit problème de mise en page Je suis entrain de faire un formulaire en PHP pour uniformisé les Télécopies ou je travail, les télécopie document.title [ par fdthierry ] Bonjour,J'ai une page avec une iframe (IfrmA.htm).Je sais renommer la barre de titre à partir de la page chargée dans la iframe.parent.document.title= modifié neige en hiver [ par vollibre ] Bonjour à tousVoila j'ai decidé de mettre un peut les mains dans le cambuit :)et déja j'ai un petit soucis qui je pense dois etre tres simple a regler


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,518 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales