[JSCRIPT] Ouvrir une fenetre avec un formulaire pour revenir

Ouvrir une fenetre avec un formulaire pour revenir [JSCRIPT] - HTML/CSS - Programmation

Marsh Posté le 18-05-2005 à 15:11:32    

Bonjour,
 
J'ai un petit problème de javascript:
 
J'ai une fenetre "mère" avec une liste de messages et à coté de chacun d'eux un bouton pour lire le message. Lorsque je clique ce bouton j'ouvre un pop-up avec le contenu du message. Jusque la ca va :)
 
Le pop-up contient en plus du contenu du message un bouton pour supprimer ce message. Lorsque je clic sur ce bouton je voudrais que le pop-up se ferme et que la suppression du message se fasse dans la fenetre "mère" et que ca m'affiche le petit message qui va bien suite au traitement de la requete.
 
C'est la que je cale, je ne sais pas comment faire. A priori il faut pointer vers la fenetre "mere" dans le champ TARGET de mon formulaire du pop-up. Mais je ne sais pas quoi y mettre car je connais pas son petit nom :??: Le nom de la fenetre du pop-up je le connais car c moi qui la crée.
 
Le formulaire pour ouvrir le pop-up ressemble a ca:

Code :
  1. <SCRIPT LANGUAGE="JavaScript">
  2. <!--
  3. function ViewMsg(NbForm)
  4. {
  5.   window.open('','MsgWin','fullscreen=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=500');
  6. }
  7. -->
  8. </script>
  9. <form name=ReadMsg method=post action=message.php target=MsgWin>
  10.   <input type=hidden name=action value=Read_Msg>
  11.   <input type=hidden name=ID_Msg value="<?=$Res_Msg['id_msg']?>">
  12.   <td><input class=bouton type=submit name=Submit value=Lire OnClick=ViewMsg()></td>
  13. <form>


 
J'espère que vous pourrez me donner un coup de main, merci. :hello:

Reply

Marsh Posté le 18-05-2005 à 15:11:32   

Reply

Marsh Posté le 18-05-2005 à 15:22:44    

Il existe un terme JS pour désigner la page appelante sans la nommer et c'est "opener"
 
Tu l'utilise à la place de "window"
Plus de détails avec "Google"

Reply

Marsh Posté le 18-05-2005 à 15:28:56    

Merci :jap:  
 
Suis parti en quête d'info :)

Reply

Marsh Posté le 18-05-2005 à 17:17:36    

Voila je suis arrivé au résultat souhaité, merci pour ton aide robbyone. :jap:  
Je laisse le code au cas ou ca puisse interesser quelqu'un d'autre.
 
Le code du pop-up:

Code :
  1. SCRIPT LANGUAGE=\"JavaScript\">
  2. <!--
  3. function SubForm()
  4. {
  5.   if(window.opener && !window.opener.closed)
  6.   {
  7.     top.opener.top.name = 'mainWindow';
  8.     document.MyForm.target = top.opener.name;
  9.     document.MyForm.submit();
  10.     setTimeout('top.close()', 1000);
  11.   }
  12.   return false;
  13. }
  14. // -->
  15. </SCRIPT>
  16. <form name=MyForm method=post action=message.php>
  17.   <input type=hidden name=action value=Del_Msg>
  18.   <input type=hidden name=ID_Msg value="<?=$Res_Msg['id_msg']?>">
  19.   <input type=submit name=Submit value=Supprimer OnClick="javascript: SubForm()">
  20. </form>

Reply

Marsh Posté le 25-05-2005 à 11:15:14    

sans vouloir chercher la petite bete, je te précise quand meme que la solution du timeout n'est pas tres recommandée. Sa fiabilité est tres limitée, notamment si pour une quelconque raison tu as des problemes avec le server.  
il y avait surement moyen de faire autrement, peut etre en utilisant la sotution d'une autre "popup" qui se contentera d'effectuer le rafrachissement de ta page mere (window.opener.location.reload()), et de se fermer(self.close()). Mais bon c'est à creuser...

Reply

Marsh Posté le 25-05-2005 à 11:18:48    

IvanleFou a écrit :

Voila je suis arrivé au résultat souhaité, merci pour ton aide robbyone. :jap:  
Je laisse le code au cas ou ca puisse interesser quelqu'un d'autre.
 
Le code du pop-up:

Code :
  1. SCRIPT LANGUAGE=\"JavaScript\">
  2. <!--
  3. function SubForm()
  4. {
  5.   if(window.opener && !window.opener.closed)
  6.   {
  7.     top.opener.top.name = 'mainWindow';
  8.     document.MyForm.target = top.opener.name;
  9.     document.MyForm.submit();
  10.     setTimeout('top.close()', 1000);
  11.   }
  12.   return false;
  13. }
  14. // -->
  15. </SCRIPT>
  16. <form name=MyForm method=post action=message.php>
  17.   <input type=hidden name=action value=Del_Msg>
  18.   <input type=hidden name=ID_Msg value="<?=$Res_Msg['id_msg']?>">
  19.   <input type=submit name=Submit value=Supprimer OnClick="javascript: SubForm()">
  20. </form>



Et la version valide :

<script type="text/javascript">
 
function SubForm()
{
  if(window.opener && !window.opener.closed)
  {
    top.opener.top.name = 'mainWindow';
    document.getElementById('myForm').target = top.opener.name;
    document.getElementById('myForm').submit();
    setTimeout('top.close()', 1000);
  }
  return false;
}
</script>
<form id="myForm" method="post" action="message.php">
  <div>
    <input type="hidden" name="action" value="Del_Msg" />
    <input type="hidden" name="ID_Msg" value="<?=$Res_Msg['id_msg']?>" />
    <input type="submit" name="Submit" value="Supprimer" onclick="javascript: SubForm()">
  </div>
</form>


:D

Reply

Marsh Posté le 25-05-2005 à 11:27:29    

Mouais je vois pas trop la différence. A la rigeur je veux bien pour le getElementById() mais les guillemets dans le code HTML je les ai bannis. Je vois pas leur utilité a part alourdir la page :o

Reply

Marsh Posté le 25-05-2005 à 11:33:13    

IvanleFou a écrit :

Mouais je vois pas trop la différence. A la rigeur je veux bien pour le getElementById() mais les guillemets dans le code HTML je les ai bannis. Je vois pas leur utilité a part alourdir la page :o


YOUHOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
 
[:delarue]
 
[:enzan]
 

Citation :

By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39).


 
C'est obligatoire, et ça peux mener à de graves problèmes :o
 
Genre j'imagine le browser qui tombe là-dessus :

<a href=mapage.php?p=truc&amp;machin=bidule class=pouet bidule truc>


Il risque de péter une belle durite :D

Reply

Marsh Posté le 25-05-2005 à 11:33:33    

Bref, apprend à coder en HTML :o


Message édité par FlorentG le 25-05-2005 à 11:33:40
Reply

Marsh Posté le 25-05-2005 à 11:42:39    

Bah si t'écris n'importe koi aussi... Je ne m'amuse pas a mettre des trucs comme l'exemple que tu as donné :sarcastic:

Reply

Marsh Posté le 25-05-2005 à 11:42:39   

Reply

Marsh Posté le 25-05-2005 à 11:45:45    

Et pourtant... Ce sont des trucs couramment utilisé (l'histoire des plusieurs classes). Bref, l'HTML4 impose de mettre des simple ou double-quote [:spamafote] Si t'en met pas, ben... C'est que t'es un mauvais développeur :D

Reply

Marsh Posté le 25-05-2005 à 11:53:16    

Disons que je les mets qd yen a besoin, sur les champs contenant des espaces, des url des trucs comme ca.
 
Sur une ligne comme ca je vois pas ou est le problème.

Citation :

<input type=hidden name=action value=Del_Msg>


 
Maintenant si ca fait de moi un mauvais développeur tant pis, j'assume. En attendant j'ai gagné quelques octets et c'était le but recherché [:sinclaire]


Message édité par IvanleFou le 25-05-2005 à 11:53:50
Reply

Marsh Posté le 25-05-2005 à 11:57:47    

Y'a presque rien de gagné : tout serveur web digne du nom gzip les pages. Ensuite, rien ne dit que le navigateur en face reconnaisse les trucs sans quotes. Aussi, c'est beaucoup moins lisible, les éditeurs avec coloration syntaxique vont rien piger, etc... Bref, pleins de désavantages pour même pas 10 octets :(
 
Y'a des règles de syntaxe pour l'HTML, ça sert à être respecté ;) La seule chance que t'ai, c'est que nos browsers sont trop cools sur la syntaxe...

Reply

Marsh Posté le 25-05-2005 à 12:07:56    

Sur un formulaire c'est sur que le gain est tres minime mais pour des tableaux de 5000 ou 10000 lignes ca commence a se faire sentir. A 500ko la page t'es content de gagner 5ko (du coté server).
 
En fait avant je faisais pas attention et j'ai du faire un site hébergé sur une connexion adsl (upload 16ko/s :/) avec un tableau de 1Mo "brut" (entendez par la codé à l'arrache). J'ai donc par la suite cherché tous les moyens possible de l'optimiser pour gagner de la bande passante (CSS, optimisation du HTML... tout y ai passé) et j'ai finis par m'apercevoir que les browsers les plus utilisés s'en foutent des guillements (qd supprimé au endroits adéquates). DOnc maintenant par habitude je ne les mets plus.
 
C'est pas conforme au standard mais de toute manière qui respecte les standards W3C... Chaque browser supporte des fonctions non conforme au spécifications W3C donc bon... la c'est pour la bonne cause :p

Reply

Marsh Posté le 25-05-2005 à 12:22:19    

ben tu fais de la pagination, ton tableau avec pagination et comme ca c'est moins crade

Reply

Marsh Posté le 25-05-2005 à 12:26:20    

C'est ce que j'avais fait :jap: mais une vue globale restait indispensable dans certains cas.
 
Vous allez pas me reprocher d'essayer d'optimiser mon code quand même :sarcastic:

Reply

Marsh Posté le 25-05-2005 à 12:28:30    

Au lieu de gagner 10 octets par ci par la, fais un code propre.  
 
Et puis, 5 ko, c'est une seconde de plus avec un 56k, autant dire rien. Et puis un HTML de 500 ko c'est pas normal :D


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 25-05-2005 à 12:37:08    

plainsofpain a écrit :

Au lieu de gagner 10 octets par ci par la, fais un code propre.  
 
Et puis, 5 ko, c'est une seconde de plus avec un 56k, autant dire rien. Et puis un HTML de 500 ko c'est pas normal :D


 
1s pour l'utilisateur mais 1/3 de la BP du server... sachant que le site était accédé presque exclusivement le soir entre 20h et 22h c'est pas négligable.
 
Pour afficher "Hello World!!" ouais. Mais qd t'as 500ko de texte à afficher t'as vite 50ko de mise en page :sweat:

Reply

Marsh Posté le 25-05-2005 à 13:08:40    

Par curiosité j'ai pris un site au hasard (www.google.fr) pour voir si je suis le seul à "coder comme un porc".
 
Extrait du code source:

Citation :

<body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onLoad=sf() topmargin=3 marginheight=3>
<center>
<img src="/intl/fr_fr/images/logo.gif" width=276 height=110 alt="Google">
<br>
<br>


 
Bah nan suis po tout seul. Preuve que ma démarche n'est peut être pas conforme aux spec mais elle n'est pas forcément sans fondement. Ou alors les codeurs de google sont des noobs aussi, dans ce cas je m'incline :jap:  
 
Ce que vous appelez "code dégueulasse" moi j'appelle ca "optimisation" [:aloy]
C'est juste un problème de vocabulaire :D

Reply

Marsh Posté le 25-05-2005 à 13:14:51    

IvanleFou a écrit :

Ce que vous appelez "code dégueulasse" moi j'appelle ca "optimisation" [:aloy]
C'est juste un problème de vocabulaire :D


C'est absolument pas de l'optimisation, et c'est absolument pas un problème de vocabulaire : c'est du bricolage qui repose à 100% sur le fait que certains navigateurs sont gentils.
 
Ensuite pour ton tableau de 5000 lignes, je voudrais bien voir la gueule du code, ça doit être bien moche... Parce quand on regarde les attributs disponibles pour les éléments <td>, y'en a pas beaucoup :

<!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->
 
<!-- Scope is simpler than headers attribute for common tables -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
 
<!-- TH is for headers, TD for data, but for cells acting as both use TD -->
<!ATTLIST (TH|TD)                      -- header or data cell --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abbreviation for header cell --
  axis        CDATA          #IMPLIED  -- comma-separated list of related headers--
  headers     IDREFS         #IMPLIED  -- list of id's for header cells --
  scope       %Scope;        #IMPLIED  -- scope covered by header cells --
  rowspan     NUMBER         1         -- number of rows spanned by cell --
  colspan     NUMBER         1         -- number of cols spanned by cell --
  %cellhalign;                         -- horizontal alignment in cells --
  %cellvalign;                         -- vertical alignment in cells --
  >


Donc soit chaque <td> de ton truc a un col/rowspan (bof), soit y'a des scope/headers (je pense pas que tu connaisse). Donc je pige pas où est-ce qu'ils sont tous tes attributs :o

Reply

Marsh Posté le 25-05-2005 à 13:17:47    

Si elle est sans fondements. Google ne se tient pas aux standards, c'est leur choix, mais c'est pas parce que des grands noms le font que c'est ce qu'il faut faire.
 

IvanleFou a écrit :

1s pour l'utilisateur mais 1/3 de la BP du server


 
Hé bien, 5ko, 1/3 de la bande passante ? Woaw j'avais jamais vu ca ... Le gain est minime, je t'assure, étant donnée que les attributs de style sont en CSS, et que le reste n'est pas tout le temps utilisé.
 
"Ca coute pas plus cher de bien coder !"


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 25-05-2005 à 14:05:39    

Bon vous avez raison :jap:  :jap:  
 
On va pas discuter 10 ans la dessus surtout que c'est même pas le sujet du topic!

Reply

Marsh Posté le 25-05-2005 à 14:08:35    

Reply

Marsh Posté le 25-05-2005 à 14:18:05    

IvanleFou a écrit :

Bon vous avez raison :jap:  :jap:  
 
On va pas discuter 10 ans la dessus surtout que c'est même pas le sujet du topic!


 :D ... mais je n'en pense pas moins ...  :ange:


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed