Passage de valeur par un lien vers une iframe depuis une autre fenêtre

Signaler
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
-
Messages postés
1
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 octobre 2005
-
Bonjour,
Je m'arrache les cheveux depuis hier sur un bout de code. J'ai tenté de créer sur une page un éditeur wysiwyg, le texte se met dans une textarea qui est dans une iframe.

Sur cette page fonctionne ce dont j'ai besoin, gras, souligné, italique. Et j'aurai voulu que les popups que j'avais déjà préparées en javascript me permettent maintenant d'y intégrer un lien, une image ou un doc. Or je n'arrive pas à faire fonctionner le lien, il n'envoie rien dans ma textarea qui est dans mon iframe.

Voici le code sur la page principale (modifier.php):

<SCRIPT type= text/javascript>
IE = window.ActiveXObject ? true : false;


function iniEditor(){
edoc = window.frames['editeur'].document;
edoc.designMode = 'On';
}


function setContent(action){
ewin = window.frames['editeur'];
edoc = ewin.document;
edoc.execCommand(action, false, null);
ewin.focus();
}


function getEditorContent(){
edoc = window.frames['editeur'].document;
document.getElementById('editeur_content').value = edoc.body.innerHTML
}


function iniEditor(){
edoc = window.frames['editeur'].document; if(edoc.designMode !'On') edoc.designMode 'On';
if(!edoc.body){
setTimeout('iniEditor()',20);
} else {
edoc.body.innerHTML = document.getElementById('editeur_content').value;
}
}
</SCRIPT>........
.......
echo "Le texte:

...........

<textarea id ="editeur_content" name="texte_contenu" style="display:none" rows="15" cols="70">$textactu</textarea>";...................

et voici le code que j'ai sur ma popup:

echo "
Cliquez ici pour ajouter ce texte coloré";

j'ai tenté aussi ceci:
echo "
Cliquez ici pour ajouter ce texte coloré";

et dans tous les sens possibles... rien à faire.

Si quelqu'un peut me dire ce qu'il manque sur ma popup pour y faire passer mon texte ce serait génial.

18 réponses

Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
Salut !

a mon avis un truk a essayer pour débugger plus facilement ton code, c'est de faire une fonction dans ta page principale qui sera appelée par ta popup :
modifier.php :
function fTest (){
document.getElementById('texte_contenu').value+="blablabla ...";
}

et dans ta popup :

Ca change pas grand chose, mais ca te permet de faire des test, mets un alert() au début de fTest déjà pour voir si ta fonction est bien appelée, etc ....

bon courage a+++
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Bouhhh... ça marche pas, et en plus ce n'est pas trop possible, car dans cette popup je crée une valeur: texte, et je ne peux pas avoir cete valeur sur ma première page.

En fait, c'est simple, je veux refaire de façon très simplifié ce que je suis en train d'utiliser en ce moment même...

j'y suis arrivée pour la mise en forme du tewxte, mais pour les liens, images et doc, je voulais réutiliser les popuos que j'ai déjà crée avant de passer à la iframe, et je n'arrive pas à trouver comment envoyer une valeur dans cet iframe par un lien... désolée, je me répète, mais je deviens complètement chèvre avec ce truc... apparemment personne ne sait...
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
Et le alert se fait ?
si non, c'est que c'est ta référence à ta page principale qui est mauvais!

pour la valeur que tu crées dans ta popup, c'est pas un pb, t'as juste a la passer a la fonction fTest :

modifier.php :
function fTest (maVar){
document.getElementById('texte_contenu').value+=maVar;
}

et dans ta popup :
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Désolée, j'étais passée sur autre chose...

Non, l'alert ne fonctionne pas.... comment puis-je changer la référence à ma page principale ?
La page principale est un formulaire, formajout2.

J'ai donc sur modifier.php:

function fTest (maVar){
alert ('Vous venez de cliquer')
document.getElementById('editeur_content').value=maVar;
}

et sur la popup:

$texte_couleur')">

Ya longtemps que j'avais pas bloqué comme ça...
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Ca y est... à 00h33 je viens de comprendre pourquoi ça ne marche pas...
La problème doit être, que la page odifier envoie bien sur une popup, popup1.php mais celle-ci est un formulaire qui envoie sur popup2.php... et de fait, window.opener envoie les données dans la popup1.php et pas dans le formulaire de la page modifier.php...

reste plus qu'à trouver s'il est possible et comment envoyer les données dans une autre page, mais pas la fenetre apellante...

bonne nuit
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
J'ai pas capté ton histoire de la popup2 ...
C'est juste l'ACTION de ton FORM ?
Si oui le window.opener est bon.

Sinon si tu ouvres une autres popup, faudrait faire un truk du genre
window.opener.opener.fTest()
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Hello,
Je crois qu'à force je mélange tout.... évidemment, ce n'est pas le window.opener, puisque cette ligne de code fonctionnait quand j'avais sur la page modif simplement une textarea... Donc le chemin de la page était bon...
Depuis que je suis passée dans une iframe avec la textarea devant, impossible d'y inscrire le texte. En fait quand je remet le code que j'avais pour envoyer dans la textarea, donc ceci:

quand je cliques il se produit une chose plutôt bizarre, on dirait qu'il crée une page (toujours dans la popup) où il affiche le champ "texte_contenu" dans son ensemble, il récupère la valeur du champ textarea et y rajoute ma variable couleur2...

c'est à dire mon champ texte_contenu contient: "Il est clair qu'il y a comme un problème..." je crée la couleur par le formulaire, je cliques sur le lien, il m'affiche:

"Il est clair qu'il y a comme un problème... ceci est la couleur bleu", ce bout de texte à l'affichage dans la couluer que j'ai définie...

????
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
J'ai pas tout capté là ... :p
C'est quoi ton iframe ? ton textarea (et du coup ton form) est dedans ?
faut faire un truk du genre :
window.opener.getElementById("monIframe").formajout2....
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
J'ai mis ceci:
Je viens de mettre ceci:

il se passe plus rien...

Woui, c'est ce que j'essaye d'expliquer avec tout mon code en haut:

je suis dans formajout2, dans:

<textarea id="editeur_content" name="texte_contenu" style="display:none" rows="15" cols="70">$textactu</textarea>";...................

c'est ce qui me permet de créer le wysiwyg
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
Mais t'as pas de SRC a ton IFRAME?

Par contre tu vas être obligé de créer formajout2 dans ton iframe !
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Regardes à cette page:

http://www.ibilab.net/webdev/articles/Javascript/creer-editeur-texte-wysiwyg-bases-10.htm

c'est de là que je sors ce bout de code, absolument génial d'ailleurs.
Non, pas de SCR à l'iframe... l'éditeur est initialisé par: function iniEditor()

les modifs sur la page sont initialisés par: function setContent(action){
ewin = window.frames['editeur'];
edoc = ewin.document;
edoc.execCommand(action, false, null);
ewin.focus();
}
et
les données sont retriatés au moment de l'envoie par :

function getEditorContent()

pffff... dur dur
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
Rha ouais l'est nickel cet éditeur !

Par contre là je vois pas trop niveau de l'iframe .. dsl !
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
Ben, ouais, j'ai trouvé aussi ... en fait je viens de rajouter la possibilité de créer des liens, ça marche, mais sans passer par une popup, je reste dans la page et j'ai crée un second

function setContent2(action){
ewin = window.frames['editeur'];
edoc = ewin.document;
edoc.execCommand(action, true);
ewin.focus();
}

et ça marche, ça crée un lien à partir du texte sélectionné.

Par contre, pas moyen toujours de faire marcher ces popups, il faut que je creuse... peut être essayer de réutiliser cette fonction setcontent depuis ma popup, mais j'ai peur que ça soit pas possible en fait...
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
A mon avis ca doit etre possib' !

depuis la popup :
function setContent2(action){
ewin = window.opener.frames['editeur'];
edoc = ewin.document;
edoc.execCommand(action, true);
ewin.focus();
}

sinon je vois pas !
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
J'ai trouvé pour mettre le texte en couleur, créer les liens, sans passer par la popup.

La fonction setContent2 fonctionne effectivement depuis la popup et vient remplir ma textarea, mais avec execCommand, execCommand si j'ai bien compris est une sorte d'élèments windows, je sais pas trop le manipuler, je voudrai maintenant inserer des images, quand je fais ça ave cette fonction, il me crée un lien: c://documents, etc... bref, il met le chemin du fichier sur mon disque dur... ce qui fait que ça suit pas trop à l'affichage sur le serveur...

J'avance un peu quand même, te donnerai la source de ce truc génial, car tu es le seul à m'aider sur tout le web....
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
bah de rien c'est normal, j'aime bien aussi qu'on m'aide quand je bloque sur un truk !

pour les images, tu fais ca avec un INPUT FILE ? ca sert a uploader des fichier sur le serveur (faut faire ca en php par ex.)!
pour choisir tes images, faudrait que tu fasse un petit explorateur de fichier (qui explore sur le serveur) dans une popup,
tu peux en trouver sur ce site !
Messages postés
22
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 février 2006
1
J'ai déjà crée une petite bibliothèque d'images sur le serveur, à partir de cette page, je devrai pouvoir arriver à les intégrer toujours avec execCommand. A plus tard, je teste
Messages postés
1
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 octobre 2005