Partage
  • Partager sur Facebook
  • Partager sur Twitter

fermeture d'un popup quand il n'est plus visible

fermeture automatique d'un popup qund il n'est plus visible à l'écran

Sujet résolu
    24 juin 2020 à 15:01:10

    Bonjour,

    Y a-t-il un "GlobalEventHandlers" en java-script qui permettrait à un "popup" actif d'être informé dès que ce denier n'est plus en avant plan sur l'écran (par exemple : dès que l'opérateur clique sur une autre fenêtre) afin de permettre au "popup" de se fermer.

    Merci

    -
    Edité par Korinth 4 juillet 2020 à 19:43:22

    • Partager sur Facebook
    • Partager sur Twitter

    PQTa

      24 juin 2020 à 15:20:50

      Bonjour,

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Java-script)

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        24 juin 2020 à 15:41:59

        Salut,

        Tu parles d'un popup que tu as créé via une div par exemple avec un z-index, ou bien d'un pop up generé par le navigateur (alert(),prompt(),confirm())

        Si c'est un pop-up qui vient du navigateur, normalement tu peux cliquer nulle part sauf sur ce dernier.

        Si c'est un pop-up qui tu as créé via une div, tu peux mettre un overlay avec une opacité sur toute la page en avant plan de la page, mais derriere la div, ca va faire un style sympa et si on clique sur l'overlay tu fais un event qui ferme le popup (display: none).

        Par contre si c'est un pop up ouvert via open(), il  y l’événement visibilityChange, voir ici pour plus d'info:

        https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilitychange_event

        • Partager sur Facebook
        • Partager sur Twitter

        La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

          24 juin 2020 à 16:08:08

          Mille excuses pour le titre non correct.

          Par contre l'évènement "visibilityChange", donné par Nadfri,  me semble correspondre à mon besoin.
          Je vais essayer.

          Merci

          • Partager sur Facebook
          • Partager sur Twitter

          PQTa

            24 juin 2020 à 16:59:43

            Je me cite :

            Pour modifier votre titre, éditez le premier message de votre sujet.

            • Partager sur Facebook
            • Partager sur Twitter

            Pas d'aide concernant le code par MP, le forum est là pour ça :)

              4 juillet 2020 à 22:06:50

              je pense avoir corrigé le titre.

              je continue les tests avec la réponse de Nadfri

              À bientôt

              • Partager sur Facebook
              • Partager sur Twitter

              PQTa

                9 juillet 2020 à 21:47:01

                bonjour,

                j'ai essayé la méthode javascript "addEventListener" dans le javascript suivant :

                <script type="text/javascript">
                	function testvisibility ()	{
                	document.addEventListener("visibilitychange", function() {
                		if (document.visibilityState === 'visible') {
                			backgroundMusic.play();
                		} else {
                			alert("Fermer votre popup");
                			fermer();
                		}
                	});
                }
                </script>

                La fonction "fermer" fonctionne par ailleurs.

                L'appel de script jscript est initié en php par l'instruction suivante :

                echo '<script type="text/javascript">testvisibility();</script>';
                

                Je n'obtiens pas le résultat escompté : c'est à dire la fermeture du popup quand celui-ci quitte la visibilité.

                Le popup est créé par des "div".

                Quelle erreur ai-je commis ?

                Merci de votre réponse.

                • Partager sur Facebook
                • Partager sur Twitter

                PQTa

                  12 juillet 2020 à 10:58:40

                  Bonjour,

                  J'ai abandonné le script précédent, car cela ne me donne pas le résultat escompté.

                  Grâce au chemin que m'a initié Nadfri, que je remercie, j'ai pu progresser et j'ai trouvé la page
                  " https://www.alsacreations.com/article/lire/1519-html-api-page-visibility.html"et j'en suis venu aux codes suivants :

                  <script>
                  var hidden, visibilityChange;
                  if (typeof document.hidden !== "undefined") {
                    hidden = "hidden";
                    visibilityChange = "visibilitychange";
                    visibilityState = "visibilityState";
                  } else if (typeof document.mozHidden !== "undefined") {
                    hidden = "mozHidden";
                    visibilityChange = "mozvisibilitychange";
                    visibilityState = "mozVisibilityState";
                  } else if (typeof document.msHidden !== "undefined") {
                    hidden = "msHidden";
                    visibilityChange = "msvisibilitychange";
                    visibilityState = "msVisibilityState";
                  } else if (typeof document.webkitHidden !== "undefined") {
                    hidden = "webkitHidden";
                    visibilityChange = "webkitvisibilitychange";
                    visibilityState = "webkitVisibilityState";
                  }
                  document.addEventListener(visibilityChange, changementVisibilite, false);
                  var log = document.getElementById('log');
                  function changementVisibilite() {
                  	if (document[hidden]) {
                  		fermer1();
                  		}
                  	}
                  	function fermer1() {
                  		window.opener=self;
                  		window.close();
                  		}
                  
                  </script>

                  Je passe bien dans la fonction "fermer1" quand le popup devient masqué, mais il ne ferme pas.

                  Je ne vois pas où est l'erreur.

                  Le popup est généré par des "div".

                  Merci de votre réponse.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  PQTa

                    15 juillet 2020 à 0:53:37

                    Salut,

                    J'ai trouvé ceci sur le net, peut-etre c'est l'effet que tu cherches:

                    https://www.activpart.com/html-javascript-ouvrir-popup-fermer-on-clique/

                    Le popup se ferme quand la page parente reprend le focus, bien sur tu peux modifier en disant que le popup se ferme des qu'il perd le focus (avec onblur sur le popup aulieu de onfocus sur le parent)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                      15 juillet 2020 à 15:21:38

                      GÉNIAL !

                      Ça marche !

                      Merci Nadfri

                      • Partager sur Facebook
                      • Partager sur Twitter

                      PQTa

                        15 juillet 2020 à 16:09:14

                        Impeccable, n'oublies pas de mettre en resolu ;)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                        fermeture d'un popup quand il n'est plus visible

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown