IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Popup, frame et form mal adressé


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Popup, frame et form mal adressé
    Hello,
    A partir d'un bouton image (au sein d'une page 1), je souhaite ouvrir une page 2, déclencher un fichier script et lui envoyer les données formulaires de la page 1 (ces déclenchements doivent pouvoir être effectués avec ou sans iFrame).

    Je réussit ceci avec sur la page 1
    * un formulaire avec une action=fichier script
    * un target=name de frame (ou iframe) de la page 2
    * sur l'image un onlick associé à un window.open(page2, nompage2, paramètresfenetre), un submit du formulaire

    Ceci fonctionne correctement sous IE11 mais pas sous FF39.0 ni Chrome 43.0.2357.134 m

    Sous FF et Chrome les résultats sont identiques : ouverture de la page 2 mais exécution du script dans un nouvel onglet de la page 1 (et malheureusement pas dans le frame de la page 2) ...

    Page1
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <FORM NAME='CAILLET_cmde#fiche' TARGET='_SELF' METHOD='post' ...>
     
    <INPUT TYPE='image'  SRC='http://127.0.0.1:8888/Tableau/Script34/script34_j15_63/include/image/activer.gif'       TITLE='TVA' ALT=''  onClick='JavaScript: window.P_open["tva_f"]=window.open("http://127.0.0.1:8888/Tableau/Script34/script34_j15_63/Exemple/T1/tva_f.php","tva_f","width=500,height=400,modal=yes,toolbar=yes,location=yes,directories=yes,status=no,menubar=yes,scrollbars=no,copyhistory=yes,resizable=yes,dependent=yes");
    	 window.P_open["tva_f"].focus(); this.form.target="hauttva";'>
    * "tva_f" est mon nom de page 2
    * "hauttva" est le nom du iFRAME de la page 2

    Page2
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <DIV class='2'  style='display:inline'>
    	<DIV class='21' style='display:inline'>
    		<iFRAME NAME="hauttva" rows="200"></iFRAME>
    	</DIV>
    	<DIV class='22' style='display:inline'>
    		<iFRAME NAME="bastva" ></iFRAME>
    	</DIV>
    </DIV>

    Sauriez-vous pourquoi une telle différence de comportement entre ces navigateurs ?
    * Est-ce un pb de synchronisation ou plutôt d'asynchronisation ?
    * Est-ce le name de la page 2 qui est mal identifié ?
    * ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    est ce que tu ne peux pas utiliser un langage côté serveur pour éviter les différences entre les navigateurs ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonne idée. Mon objectif est la mise en place d'un outil qui à partir d'une page émettrice et d'un formulaire, puisse créer un bouton vers une autre page/formulaire (aspect de la nouvelle fenêtre devant être paramétrable).

    Ce bouton devant : appeler 1 page 2, exécuter un script PHP dans une cible de la page (éventuellement frame) et réceptionner les données du formulaire de la page 1.

    A priori les paramètres du FORM de la page 1 rendent ceci possible, mais comment
    * tester si la page n'a pas déjà été ouverte sans JS et opener ?
    * rendre paramétrable l'aspect de la fenêtre 2 ?

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Synchroniser le chargement de la fenetre fille et la suite de l'execution de la fenetre mere
    J'ai supposé que le soucis provenait de la désynchronisation du chargement de la fenêtre fille et de la suite de l’exécution ...

    Je n'ai pas réussit à utiliser un onload sur la fenêtre fille mais en testant sa variable de chargement je résous le problème sous FF. Toutefois Chrome ne fonctionne toujours pas de façon adéquate.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    P_open[\"$nom_page\"]=window.open(\"$adrs1\",\"$nom_page\",\"$option\");
    while(! P_open[\"$nom_page\"])
    Peut être faut il faire patienter au delà de ce test ?

    J'ai aussi tenté de déclarer une variable sur la fenêtre fille et d'en attendre la bonne exécution mais je suppose avec un code erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (typeof P_open[\"$nom_page\"].flagOpen === \"undefined\") {var P_open[\"$nom_page\"].flagOpen=new Boolean(true);}
    Auriez vous un suggestion ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Hello,
    J'ai tenté avec a et href sous JS, pas mieux (fonctionne sous IE mais pas sous FF et Chrome). J'ai l'impression que l'ouverture de fenêtre n'est effectuée qu'à la fin du script et que du coup le submit avec target ne trouve pas sa cible et ouvre donc dans une nouvelle fenêtre/onglet ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(typeof objLink==\"undefined\") {var objLink = new Object();}	
     
    objLink = document.createElement(\"a\");
    objLink.setAttribute(\"id\"	, \"$nom_page\");
    objLink.setAttribute(\"href\"	, \"$adrs1\");
    objLink.setAttribute(\"target\", \"_new\");
    objLink.setAttribute(\"title\"	, \"mon site\");
     
    this.form.appendChild(objLink);
     
    objLink.click();
    Je rappel que mon objectif est à partir d'un bouton d'ouvrir une fenêtre fille avec une structure définie (éventuellement frame/iframe ou pas), d'y envoyer une série de paramètre via un formulaire précédent (fenêtre mère) sur une cible de la fenêtre fille (éventuellement frame/iframe) et en y exécutant un script.

    Je crains de ne pouvoir utiliser uniquement les éléments PHP car dans ce cas je pourrais effectivement ouvrir la fenêtre fille (a et href) mais je perdrais la main sur l’exécution de la fenêtre mère et ne pourrais déclencher son submit ...

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je tente pour FF & Chrome de declencher le submit de la fenetre mere apres le chargement de la fenetre fille. Or ce chargement n'est effectif qu'après l'exécution du script de la mere et donc son submit ...

    Pour cela je me positionne sur la fenetre fille et sur l'event onLoad je submit la fenetre mere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.top.opener.document.forms["nom form fenetre mere"].submit()
    Cela semble (presque) fonctionner sous FF mais pas sous Chrome.


    Suis-je sur une bonne piste ou y-aurait-il une démarche + simple ?

    Merci d'avance de votre attention.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je confirme que le submit du FORM de la fenêtre mère à partir de la fenêtre fille est une solution hélas lourde mais qui fonctionne.

    Merci à ceux qui ont eu la patience de me lire.

Discussions similaires

  1. Ouverture popup et envoi forms
    Par guilopouloos dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/08/2009, 15h33
  2. wx.frame avec forme personnalisée et sans bordure
    Par atalon1 dans le forum wxPython
    Réponses: 2
    Dernier message: 20/01/2009, 17h44
  3. Ouverture d'une popups avec un <form en plein centre de l'ecran
    Par mecmec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2007, 19h07
  4. Frame de forme adapatble
    Par kivan666 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 17/03/2006, 08h18
  5. [Tiles]message d'erreur dans un footer (form mal rempli)
    Par clement42 dans le forum Struts 1
    Réponses: 5
    Dernier message: 09/06/2005, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo