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 :

Détecter l'ouverture d'une fenêtre


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Détecter l'ouverture d'une fenêtre
    Bonjour à tous

    Je voudrais savoir s'il existe un moyen de détecter l'ouverture d'une fenêtre à partir d'une page.

    J'ai un lien dans ma page, à l'avance je ne sais pas s'il va être fait avec un <a href ou avec un élément Flash et ce lien ouvre une nouvelle fenêtre.

    Pour les besoins de mon client, il veut que je détecte le fait qu'un nouvelle fenêtre s'ouvre et que je déclenche un traitement serveur.
    Pour le traitement serveur, c'est bon, j'ai fais une requête XmlHttpRequest, mais je ne trouve pas le moyen de la déclencher.

    Avez vous une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    J'ai fait un petit test qui me semble concluant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type="text/javascript">
        function test(){
        var win = window.open("http://www.yahoo.fr"); 
        if (win && win.open){
            alert("ok");
        }
        }
    </script>
    <input type="button" value="ok" onclick="test()"/>
    On ouvre la fenêtre et on teste si l'objet win est open.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Juste un petit souci : tant que je ne clique pas sur le bouton, je ne peux pas savoir si nue fenêtre vient d'être ouverte.
    Dans mon cas j'ai besoins de le savoir par le faite qu'elle s'ouvre.

    Ou alors, j'ai pas compris comment l'implanter.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    a part avoir un script qui tourne en boucle pour tester ?

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci SpaceFrog.

    ça se présenterais comment le script dont tu parles ?
    Je ne vois pas bien comment faire une boucle en JavaScript.

    Et tester le windows.parent.length, ok, mais ça implique que s'il y a eu une fenêtre d'ouverte, vres ni'mporte quel autre site, le length va prendre autre chose que 0 ?

    @b_zakaria : je viens seulement de voir ça dans ton idée : tu mets yahoo, ela veut dire qu'il faut que la fenêtre soit ouverte vers ce site pour être prise en compte ?
    Parce que dans mon cas, je ne sais pas à l'avance où va aller le visiteur en cliquant.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var counter=0
    function watchwindows(){
    if(windows.parent.length()>counter){
        alert('une fenetre à été ouverte');
        }
    function launch(){
    var runit=setInterval(watchwindows,500)
    }
     
     
    //avec
    <body onlod="launch()">
    }

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton code.

    J'ai quelques soucis et voici où j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var counter = 0
            function launch() {
                var runit = setInterval(watchwindows, 500)
            }
            function watchwindows() {
                if (window.parent.length() > counter) {
                    alert('une fenetre à été ouverte');
                    go();
                }
            }
    Visiblement au départ, il voulait pas de la functoin launch() là où elle était, il la trouvait pas.
    Ensuite il m'a dit que window, c'était sans S.

    Et maintentant il me dit que window ne gère cette méthode.

    Là, je suis bloqué et je comprend pas.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    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
    <script type="text/javascript">
    var counter = 0
    var runit
        function watchwindows() {
         alert(window.parent.length)
                if (window.parent.length > counter) {
                alert('une fenetre à été ouverte');
                  }
    }                
     
    function launch() {
              runit = setInterval(function(){watchwindows()}, 1500)
            }
    </script>
    </head>
     
    <body onload="launch()">
    <input type="button" onclick="window.open('about:blank');self.focus();" vlaue='test' />
    </body>
     
    </html>
    mais à priori il ne capte pas le length

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Pour faire avancer le truc :
    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
     
    <script type="text/javascript">
    var counter = 0
    var runit
        function watchwindows() {
        var liste=""
        for(elt in window.parent){
         liste+= elt + " => " + window.parent[elt] + "\n"
         }
         alert(liste)
                if (window.parent.length > counter) {
                alert('une fenetre à été ouverte');
                  }
    }                
     
    function launch() {
              runit = setInterval(watchwindows, 1500)
            }
    </script>
    </head>
     
    <body onload="launch()">
    <input type="button" onclick="window.open('about:blank');self.focus();" vlaue='test' />
    </body>
     
    </html>
    Mais je ne vois pas de différence entre ouverte et pas ouverte

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Effectivement, il ne prends pas en compte le test.

    Et donc, une idée ?

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    pas pour le moment

  12. #12
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Je n'ai pas bien compris : il faut savoir si une fenêtre est ouverte dans la fenêtre parent ou la fenêtre ouverte ?

  13. #13
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Salut Nadox

    Il faut savoir si quelqu'un à cliquer pour ouvrir une fenêtre.

    En gros, tu es sur une page : dans cette page il faut que je sache si une autre fenêtre s'ouvre. Et il faut que je le sache avec du JavaScript pour lancer une requête xmlHttpRequest.

    C'est plus clair ?

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Si c'est toi qui code les ouverture de fenetre tu peux les assigner a des variables et tester leur .closed

  15. #15
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Comme j'ai dis dans mon message d'ouverture : je ne maitrise pas le code.

  16. #16
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Ok, c'est plus clair.
    Donc si je comprends bien, tu n'as pas la main sur la création des liens ?

    Il va donc falloir parcourir tout les liens susceptibles d'ouvrir une nouvelle fenêtre, et leur ajouter une fonction sur l'évènement onclick.
    Cette fonction permettras de faire le traitement XmlHttp dont tu parlais.

  17. #17
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ouaip, visiblement tu as bien compris et j'espère que tu as une idée car je ne vois absolument pas comment transformer l'idée en code.

    Je vais rajouter un détail dont j'ai pris conscience hier aprés midi : dans la série je ne maitrise rien, certains Script envoi un objet Flash et là aussi il faut capter l'ouverture de la fenêtre qu'ils vont déclencher. Sauf que leur comportement n'est pas le même sur IE que sur FF.

    En gros, pour faire des tests, je me suis amuse à mettre le Script de la régie dans un DIV et de faire un onClick sur le DVI (en lui faisant un alert dedans) :
    - un flash sur FF, l'alert pop et tout va bien
    - un flash sur IE, pas d'alert, mais ouverture de la fenêtre de destiantion quand même.

    Voilà, c'était juste pour en rajouter un petit peu de bon matin !!!!

  18. #18
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Pour ie, c'est "normal", puisqu'il traite le href avant le onclick et ne fait pas le onclick si il y a un href...
    C'est possible d'avoir un exemple du code sur lequel il faut agir ?(même 2 avec un flash)
    Si il n'y a pas d'iframe, on va pouvoir faire quelque chose pour les liens. Pour les liens flash, c'est pas évident, tout dépend comment il sont fait...

  19. #19
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Et tu peux pas faire le test côté serveur ?

    Quand le client ouvre une nouvelle fenêtre, cette nouvelle fenêtre va faire un appel serveur, il "suffit" alors de voir si cet appel est associé à la même session et voilà \o/.

  20. #20
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci les gars.

    Alors, test côté serveur non : l'ouverture de la nouvelle fenêtre se fait sur un autre site, que je ne maitrise pas et que je ne connais pas à l'avance.

    Iframe : heu, ben si, tout ceci est dans une Iframe.

    Pour le traitement du Onclick avant le Href, pas vraiment car j'ai pu voir sur si je mest un lien, avec une iamge dans un Div, le onclick du div est traité avant le href du lien, IE comme FF

    Maintenant exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id="divclick" onclick="alert('click');">
                        <script type="text/javascript"> 
    var uri = 'http://impfr.tradedoubler.com/imp?type(js)pool(444812)a(1987481)' + new String (Math.random()).substring (2, 11);
    document.write('<sc'+'ript type="text/javascript" src="'+uri+'" charset="ISO-8859-1"></sc'+'ript>');
    </script>
                        </div>
    Donc le div est placé dans un Iframe, ne pas oublier.
    Le script qui est dans le Div envoi, au choix, un objet flash ou un un lien <a href avec une image dedans.

    Grâce au Onclick du DIV j'arrive à traiter tous les cas de click sur un lien Image, IE comme FF et les click sur un objet Flash dans FF uniquement. Je ne sait pas pourquoi sur IE , l'objet Flash à l'air autonome.

    Donc l'idée est de détecter l'ouverture de la fenêtre qiu va avoir lieu au moment du click (ça, au moins on en est sûr, qu'une fenêtre va s'ouvrir).

    S'il faut autre chose comme donnée ou indication, il suffit de me demander.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/06/2007, 17h15
  2. Détecter l'ouverture d'une fenêtre
    Par Matt2094 dans le forum Delphi
    Réponses: 9
    Dernier message: 30/08/2006, 13h48
  3. Erreur sur l'ouverture d'une fenêtre popup
    Par misa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/11/2005, 16h21
  4. Ouverture d'une fenêtre ms-dos malgré l'utilisation de .pyw
    Par Ank dans le forum Général Python
    Réponses: 2
    Dernier message: 21/10/2005, 15h33
  5. [HTTPS] ouverture d'une fenêtre
    Par Boosters dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/01/2005, 15h08

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