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 :

popop window.open événement OnUnLoad


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut popop window.open événement OnUnLoad
    Bonjour à tous,

    ceci est la suite d'une précédente discussion... maintenant je sais que pour faire ce que je veux, je dois utiliser du javascript, donc ce forum est particulièrement adapté.

    Voilà donc je crée d'abord une fonction javascript

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SCRIPT language="javascript">
        function popup(page) {
          window.open(page);
        }
    </SCRIPT>
    ensuite, je fais appelle à cette fonction après le body

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><BODY BGCOLOR="#FFFFCC" OnLoad="javascript:popup('result.php') OnUnLoad="javascript:popup('result.php')">
    j'ai mis le popup à la fois sur ouverture et fermeture, pour voir...

    mais ça ne fonctionne pas... result.php n'est ni ouvert au chargement ni ouvert à la fermeture...

    En revanche, le lien suivant

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A href="javascript:popup('result.php')">Ouverture popup basique</A>
    permet bien d'ouvrir result.php dans une fenêtre...


    Quelqu'un peut-il m'aider???


    Cordialement
    Matheu

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <BODY BGCOLOR="#FFFFCC" onload="popup('result.php');" onunload="popup('result.php')">
    ... et pas de "Javascript:" dans le code des évènements.

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    bon, je ne rentrerai pas dans le débat de la superposition des couches parce que je n'ai pas d'avis sur la question...

    mais voilà en fait quand on y réfléchit bien... le problème c'est que internet explorer est paramétré par défaut pour bloquer les pop-up... donc en fait l'événement sur le Onunload ne fonctionne pas...

    comment faire donc sans les pop-up, pour qu'une page voulue s'ouvre quand on en ferme une autre??? avez-vous une solution?

    Cordialement
    Mathieu

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    ah oui, aussi, autre chose que je viens de remarquer:

    quand l'utilisateur quitte la page simplement parce qu'il a cliqué sur un lien "Suivant" de cette page, je ne souhaite pas que la page correspondant à l'événement Unonload s'affiche... en fait je voudrais juste qu'elle s'affiche si l'utilisateur a fermé la fenêtre en utilisant la croix noire en haut en droite (sur un système windows)...

    quelqu'un a-t-il la solution???


    Mathieu

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Que veux tu faire avec ces pop up? N'y a t-il pas un moyen moins intrusif de le faire.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    ben je sais pas s'il n'y a pas un moyen moins intrusif... c'est toi l'expert!

    en fait voilà, je t'explique ce que je veux faire: il y a un formulaire sur une première page, j'espère que le visiteur sur mon site va le remplir.
    -> s'il le remplit c'est ok, il passe à la deuxième page et tout va bien
    -> sinon, s'il ferme la fenêtre avec la croix en haut à droite (dans windows), je voudrais que s'affiche une page de "substitution"

    Comment faire cela sans le pop-up? Ou au pire, avec le pop-up, mais que le comportement soit différent suivant les deux cas décrits plus hauts?

    Merci pour ton aide
    Mathieu

  7. #7
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Ton utilisation de la popup nuit à liberté de l'utilisateur, il a le choix de vouloir partir à tout moment

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    libre à lui de bloquer les pop-up dans ce cas!

    donc comment faire pour que le comportement soit différent dans les deux cas décrits? est-ce possible?

    ou y a-t-il une solution sans pop-up?

    Mathieu

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    En fait, je me dis qu'on peut peut-être différencier de façon plus fine les événements... peut-être que le OnUnLoad peut se diviser en plusieurs cas par exemple... quelqu'un peut-il m'en dire plus à ce sujet?

    ou alors sans les pop-up, y a-t-il une solution à mon problème?

    Merci d'avance
    Mathieu

  10. #10
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par E.Bzz
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <BODY BGCOLOR="#FFFFCC" onload="popup('result.php');" onunload="popup('result.php')">
    ... et pas de "Javascript:" dans le code des évènements.

    A+
    Encore mieux, pas de javascript dans l'html.

    On appelle cela, le unobstrusive javascript.
    A savoir, qu'au même titre que la séparation du fond et la forme, on sépare la logique de la fond.

    On évitera donc, pour des raisons, de légereté ou de maintenance, de mettre du code applicatif dans le code d'affichage.

    Prennons un exemple concret :

    Des lignes de tableaux. Chacune possède un evenement de rollover. En modifiant une fonction affectée à ce rollover, on devrait hypothétiquement, dans le cas du code appplicatif DANS le code html, le modifier à tous les endroits ou il est présent sur le site.

    Alors qu'en séparant les couches, il suffit de modifer, le code et uniquement le code.

    C'est une base du dom scripting, et une base essentielle en programmation.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Tu sais, j'ai déjà du mal à discerner les couches dans mon esprit alors... je pense que tout ceci viendra avec le temps, mais pour l'instant je veux juste une petite application pour mon usage personnel...

    Et... la réponse à ma question?

    Cordialement
    Mathieu

  12. #12
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Le onunload peut être trigger au changement de page, tu décharges une page pour en charger une autre, en d'autre termes tu fais un onunload puis un onload.

    Pour ton cas, tu ne peux pas distunguer les deux. Si tu veux vraiment une pop up (en l'occurence pseudo popup, ou pop up interne) c'est vraiment pas user friendly, essayer de neutraliser l'evenement (il me semble que c'est onbeforeunload) et d'afficher la pseudo popup.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    aïe, comme tu l'as compris, je suis assez débutant, et j'ai vraiment pas compris ce que tu me disais...

    quelle est ta stratégie exactement? utiliser OnBeforeOnLoad? utiliser conjointement OnLoad et OnUnLoad? je ne comprends pas très bien comment ça va pouvoir répondre à ma question

    d'après une doc que j'ai trouvé sur le web
    "IL peut s'agir d'un changement de page ou d'une fermeture de la fenête, les scripts javascript sont incapables de faire la différence entre les deux. "
    http://quentinc.net/ref/events/onbeforeunload/


    A+
    Mathieu

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      <script type="text/javascript">
    		    //<![CDATA[
    					window.onbeforeunload = function() {
    						return false;
    					}
    		    //]]>
    		</script>
    Ce code lancera une alert confirm "Voulez vous vraiment quitter la page". Et ce
    manière systématique, qu'elle que soit l'action que tu fais dessus.

    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
    		    //<![CDATA[
    					window.onunload = function(e) {
    						return open("http://www.google.fr");
    					}
    		    //]]>
    		</script>
    Qui ouvre une popup non blockée (en tout cas sur Firefox) mais du coup ça intervient au clic,navigation par historique etc...

    Il me semble que tu peux modifier le window.location ( donc la page vers laquelle pointera le navigateur ), mais c'est encore plus instrusif, donc pas du tout recommandé.

    Y'a pas de méthode propre pour faire ça en fait.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    Je ne comprends pas très bien... la fonction tu la déclares au moment où tu l'utilises? que contient-elle cette fonction exactement?
    et aussi, donc est-ce que c'est sensé permettre de différencier les cas suivant qu'on va vers la page suivante ou qu'on ferme complètement la page?

    Le popup, est-ce que j'y fais appel après la balise body?... j'imagine

    voilà, bref, j'ai fait quelques essais, mais ça n'a pas été concluant...

    Bonne journée
    Mathieu

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Elle est censée t'empêcher de fermer la fenêtre (en rappelant une url en automatique)
    Citation Envoyé par Mathieu72
    est-ce que c'est sensé permettre de différencier les cas suivant qu'on va vers la page suivante ou qu'on ferme complètement la page?
    Non.

    A+

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    reprenons...
    je pensais qu'une fonction javascript, on la déclarait comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SCRIPT language="javascript">
        function popup(page) {
          window.open(page);
        }
    </SCRIPT>
    et qu'ensuite, on faisait appel à elle dans la balise body...
    mais toi tu fais déjà référence à l'événement OnBeforeOnLoad dans la fonction javascript...


    Donc voilà à part ça, donc dans l'idéal, quand l'utilisateur voudra quitter la page, il sera automatiquement dirigé vers une autre page? A quoi bon alors utiliser onbeforeunload? il suffit d'utiliser onunload près de body non?

    Et donc pour ce qui est de mon problème: afficher une page différente suivant que l'utilisateur valide un formulaire ou ferme la page, je vois toujours pas le lien :-(


    Cordialement
    Mathieu

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Mathieu72
    et qu'ensuite, on faisait appel à elle dans la balise body...
    C'est une des manières de faire
    mais toi tu fais déjà référence à l'événement OnBeforeOnLoad dans la fonction javascript...
    "Moi", non, mais rien n'empêche de faire référence à un évènement d'où on veut ...

    Donc voilà à part ça, donc dans l'idéal, quand l'utilisateur voudra quitter la page, il sera automatiquement dirigé vers une autre page? A quoi bon alors utiliser onbeforeunload? il suffit d'utiliser onunload près de body non?
    Il s'agissait de 2 propositions distinctes

    Et donc pour ce qui est de mon problème: afficher une page différente suivant que l'utilisateur valide un formulaire ou ferme la page, je vois toujours pas le lien :-(
    Le "lien" t'a été donné plusieurs fois : ce n'est pas possible !

    EDIT : ceci dit, quand on valide un formulaire, c'est le form qui détermine la page suivante ...

    A+

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Points : 61
    Points
    61
    Par défaut
    une lueur d'espoir?
    oui effectivement, quand on valide le formulaire c'est la page suivante au formulaire qui est atteinte quand on le valide... mais donc ça ne change rien au problème de départ (comportement différent suivant qu'on valide le formulaire ou ferme la fenêtre) qui est insoluble ça? (je demande à tout hasard...)

  20. #20
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par Mathieu72
    reprenons...
    je pensais qu'une fonction javascript, on la déclarait comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SCRIPT language="javascript">
        function popup(page) {
          window.open(page);
        }
    </SCRIPT>
    et qu'ensuite, on faisait appel à elle dans la balise body...
    mais toi tu fais déjà référence à l'événement OnBeforeOnLoad dans la fonction javascript...


    Donc voilà à part ça, donc dans l'idéal, quand l'utilisateur voudra quitter la page, il sera automatiquement dirigé vers une autre page? A quoi bon alors utiliser onbeforeunload? il suffit d'utiliser onunload près de body non?

    Et donc pour ce qui est de mon problème: afficher une page différente suivant que l'utilisateur valide un formulaire ou ferme la page, je vois toujours pas le lien :-(


    Cordialement
    Mathieu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function maFonction() {
    	alert('Hello world!');
    }
    window.onload = maFonction;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var maFonction = function () {
    	alert('Hello world!');
    }
    window.onload = maFonction;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function maFonction() {
    	alert('Hello world!');
    }
    window.onload = function() {return maFonction}();
    Tout ça c'est pareil, quelque soit l'endroit ou tu le mets, ça sera fait à chargement de la page et pas avant.
    Tu dois pouvoir mettre tout ton code dans le head, si tu sépare bien les entités (html et javascript par exemple)

    Une piste serait de récupérer l'historique du navigateur, et la comparer avec ta page d'origine (celle ou on valide la formulaire), pour savoir si tu déclenche le onbeforeunload ou pas.

Discussions similaires

  1. onunload window open
    Par rexxys dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/10/2013, 13h15
  2. coordonnées d'une fenêtre avec window.open
    Par neecolas dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/05/2005, 09h08
  3. Problème de titre avec la fonction window.open
    Par kloss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2005, 18h34
  4. window.opener ____ perdu
    Par camyo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/02/2005, 16h01
  5. QueryString avec window.Open ??
    Par christine dans le forum ASP
    Réponses: 4
    Dernier message: 29/08/2003, 09h27

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