Bonjour,

Tout d'abord je m'excuse de poser une question qui a, visiblement, été posté énormement de fois, mais je n'ai pas trouver ma réponse malgrés mes recherches, que ce soit dans le forum ou dans les faq.

Alors mon problème : Je veux faire un formulaire permettant de poster une news et, comme sur un forum par exemple, je veux y mettre des bouton facilitant la mise en forme du texte. Pour faire ça, j'ai récupérer une fonction existante.

Je poste tout d'abord mes pages :
La page avec le formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<script language="JavaScript" type="text/javascript">
function AddText(startTag,defaultText,endTag) 
{
   with(document.poster)
   {
      if (message.createTextRange) 
      {
         var text;
         message.focus(message.caretPos);
         message.caretPos = document.selection.createRange().duplicate();
         if(message.caretPos.text.length>0)
         {
            //gère les espace de fin de sélection. Un double-click sélectionne le mot
            //+ un espace qu'on ne souhaite pas forcément...
            var sel = message.caretPos.text;
            var fin = '';
            while(sel.substring(sel.length-1, sel.length)==' ')
            {
               sel = sel.substring(0, sel.length-1)
               fin += ' ';
            }
            message.caretPos.text = startTag + sel + endTag + fin;
         }
         else
            message.caretPos.text = startTag+defaultText+endTag;
      }
      else message.value += startTag+defaultText+endTag;
   }
}
 
//Appel du popup
function fenetre()
{
	config='height=100, width=175,top=150, left=150, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no'
	window.open("input.php","Lien",config);
}
</script>
 
<form action="" method="post" name="poster">
<table border="1">
  <tr>
    <td>Titre de la news :</td>
    <td><input name="tf_newstitre" type="text" size="50" /></td>
  </tr>
  <tr>
    <td></td>
    <td>
	  <table border="0">
		  <tr>
			<td><input name="btn_Gras" type="button" value="G" onclick="javascript:AddText('<b>','','</b>');" /></td>
			<td><input name="btn_Ital" type="button" value="I" onclick="javascript:AddText('<i>','','</i>');" /></td>
			<td><input name="btn_Under" type="button" value="S" onclick="javascript:AddText('<u>','','</u>');" /></td>
			<td><input name="btn_Pic" type="button" value="Image" onclick="javascript:fenetre();" /></td>
			<td><input name="btn_Link" type="button" value="Lien" onclick="" /></td>
		  </tr>
	  </table>
</td>
  </tr>
  <tr>
    <td>Corps de la news :</td>
    <td><textarea name="message" wrap="virtual" cols="38" rows="10"></textarea></td>
  </tr>
</table>
</form>
La fenetre input.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
if (isset($_POST['tf_lien'])) { ?>
<script language="JavaScript" type="text/javascript">
	window.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ;
	window.self.close() ;
</script>
Fermez cette fenêtre si ca ne s'est pas fait automatiquement.
<?php 
}
?>
<form action="" method="post" name="f_lien">
	<table border="0">
	  <tr>
		<td><div align="center">Entrer le lien ici :</div></td>
	  </tr>
	  <tr>
		<td><div align="center"><input name="tf_lien" type="text" /></div></td>
	  </tr>
	  <tr>
		<td><div align="center"><input name="submit_lien" type="submit" value="Valider"/></div></td>
	  </tr>
	</table>
</form>
Les boutons permettant l'ajout de balise 'gras', 'italique' et 'souligné' fonctionne sans soucis.
L'appel du pop-up se fait également.
Dans le pop-up je rentre mon lien, je valide et là :
-> il ne se passe rien sur la fenetre principale
-> Le pop-up ne se ferme pas

Pour le fait qu'il ne se ferme pas, visiblement la cause en serai Firefox, mais à vrai dire, c'est secondaire dans le cas présent.

Le gros soucis c'est donc qu'il ne se passe rien dans le formulaire de la fenetre principale.
J'ai tester différente façon d'appeler ma fonction tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
window.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ;
// ou
window.top.opener.AddText('<a ref="', <?php echo $_POST['tf_lien'] ; ?>, '" targer=_blank />') ;
Enfin, j'ai tester les différents schéma présenté lors des différentes recherches que j'ai faite.
Je me demande si ca ne réagi pas à cause d'une erreur dans la fonction 'AddText()' ou si l'appel de la fonction est foireux.

Merci à vous