Bonjour.
Sous Internet Explorer 11, l'option "Fermer les autres onglets" permet de fermer tous les onglets inactifs sauf l'onglet actuellement ouvert et actif.
Comment faire la meme chose en JavaScript?
Merci.
Version imprimable
Bonjour.
Sous Internet Explorer 11, l'option "Fermer les autres onglets" permet de fermer tous les onglets inactifs sauf l'onglet actuellement ouvert et actif.
Comment faire la meme chose en JavaScript?
Merci.
On ne peut pas, ce n'est pas dans le bac à sable de JS.
Tu ne peux fermer les autres onglets que si les fenêtres ont un lien de parenté (window.open) ...
Bonjour.
Faut-il associer à chacune des pages une sorte d'identificateur ?
Comment faire en JavaScript (ou en PHP), pour vérifier si chacune de nos pages ait actuellement ouverte ou non dans un onglet dans du navigateur ?
Merci.
Bonjour.
Lorsque j'essaye le code suivant
Cela ne marche pas. La reference "fenetreOuverte" est toujours indéfinie.Code:
1
2
3
4
5
6
7
8
9 var fenetreOuverte; function ouvrirFenetre() { fenetreOuverte = window.open('http://www.developpez.net/'); } function fermerFenetreOuverte() { fenetreOuverte.close(); }
Comment faire?
Merci.
toutes les autres fenêtre ou autres onglets n'appartiennent pas à ton appli donc INTERDIT de le fermer.Code:
1
2
3
4 maFenetre = windows.open('monurl'); if (maFenetre) { maFenetre.close(); }
le navigateur ne t'en donnera pas l'accès.
C'est l'utilisateur qui choisi d'ouvrir ou de fermer des site/application dans son navigateur
ce n'est pas le développeur d'une quelconque application de faire intrusion dans ces choix.
de façon générale le navigateur est le navigateur du client c'est lui qui doit rester maitre à bord.
le document est le document de l'application c'est à elle de décider ce qu'il doit contenir et comment il doit agir.
Chacun chez soit et on aura moins de m@rd# de piratage.
A+JYT
Bonjour.
La condition est toujours fausse puisque maFenetre est indéfinie.Code:
1
2
3 if (maFenetre) { maFenetre.close(); }
Est-ce possible d'utiliser des variables de session?
Merci.
Bah c'est normal, si tu ouvres la fenêtre dans l'onglet courant, tu perds le contexte.
Quant aux sessions, elles n'existent pas à proprement parler en JavaScript.
Code:
1
2
3
4 var maFenetre = window.open('http://www.developpez.net/', '_blank'); setTimeout(function(){ maFenetre.close(); }, 2000);
Bonjour.
Même en faisant :
La fonction maFenetre.close(); ne fonctionne pas.Code:var maFenetre = window.open('http://www.developpez.net/', '_blank');
Dans les faits, l'objectif de mon problème est le suivant:
-L'utilisateur se connecte au site via un login et un mot de passe
-Tant qu'il est connecté il peut ouvrir plusieurs pages dans différents onglets du navigateur (par exemple la page des articles du site, la page des vidéos du site, etc...)
-Mais une fois que l'utilisateur se déconnecte du site, les autres pages encore ouverte du site ne devraient plus pouvoir réagir aux actions de l'utilisateur
C'est un problème similaire au fait de pouvoir poster des messages sur un forum tant qu'on est connecté, mais dès qu'on se déconnecte du forum depuis une autre page ouverte d'un autre onglet où on était connecté, les autres pages des autres onglets du forum où on était connecté ne nous permettent plus de poster des messages étant donné que notre déconnexion s'est effectué depuis une autre page d'un autre onglet.
Comment faire ?
Merci.
C'est que tu dois mal l'utiliser...
http://jsfiddle.net/8f87cf0f/
Voici mon code HTML:
Code:
1
2
3 <ul class="test"> <li class="openchoix" onclick="Start_Choix()";=""><a href="#" class="testautre">Lancer fonction</a></li> </ul>
Voici ma fonction JavaScript "Start_Choix()" :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function Start_Choix(){ var Tool ='No choice'; <?php foreach($Liste as $key => $value){ if($test["Profil"]=='chef' and ($key>3 and $key<10)){ echo 'var Tool'.$key.' = document.getElementById("ChxLabel'.$key.'").checked;'."\r\n"; echo 'if (Tool'.$key.'===true) Tool=document.getElementById("ChxLabel'.$key.'").value;'."\r\n"; } if($test["Profil"]=='employe' and $key==12){ echo 'var Tool'.$key.' = document.getElementById("ChxLabel'.$key.'").checked;'."\r\n"; echo 'if (Tool'.$key.'===true) Tool=document.getElementById("ChxLabel'.$key.'").value;'."\r\n"; } } ?> var fenetre; if(Tool=='liste première') fenetre = window.open('http://www.developpez.net/', '_blank'); else if(Tool=='liste seconde'){ if(fenetre){fenetre.close();}} }
Quand je clique sur "Lancer function" en ayant choisi 'liste première', la page 'http://www.developpez.net/ s'ouvre bien dans un nouvel onglet.
Mais après, quand je clique sur "Lancer function" en ayant choisi 'liste seconde', rien ne se passé, la page 'http://www.developpez.net/ ne se ferme pas.
Comment faire?
Merci.
Ton code HTML n'est pas correct.
Que vient faire du code PHP dans le script ?
JavaScript (et le navigateur) n'interprète pas le PHP, ce qui nous intéresse, c'est uniquement le code JavaScript généré et exécuté.
:arrow: Important : Les règles incontournables d'utilisation de ce forum.
Ce que tu cherches à faire c'est une authentification côté serveur.
Ouvrir plusieurs onglets est un moyen de détourner l'usage prévu d'une application, car en utilisant un autre onglet on « s'échappe » du scénario normal de navigation dans une seule page. Comme tu l'as constaté, ça permet à l'utilisateur de faire des actions à des moments où il ne devrait pas pouvoir, par exemple poster un message alors qu'il est déconnecté.
Comme SpaceFrog et Sekaijin te l'ont dit, tu n'as aucun contrôle sur les onglets de l'utilisateur. Tu dois donc utiliser un mécanisme de protection côté serveur. Et ce mécanisme, c'est simplement les sessions.
Documente-toi sur les sessions PHP, essaye de mettre en œuvre une authentification basique, et si tu n'y arrive pas, ouvre un sujet dans le forum PHP ;)
Une remarque importante à propos de ton code JavaScript : c'est une mauvaise idée de le faire générer par PHP. Ça le rend difficile à lire, et difficile à déboguer car on ne peut pas vraiment savoir si une erreur vient du code PHP ou du code JS. Limite au maximum le couplage entre PHP et JS en passant juste les informations essentielles.
Par exemple si je reprends ton code :
Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <script> "use strict"; // =========== passage d'info PHP -> JS ============= var profil = "<?php echo $test['Profil']; ?>"; // =========== /passage d'info PHP -> JS ============ var fenetre; function Start_Choix() { var Tool = 'No choice'; /* <?php # foreach ($Liste as $key => $value) { # if ($test['Profil'] === 'chef' and $key > 3 and $key < 10) { # echo "var Tool$key = document.getElementById('ChxLabel$key').checked;\n"; # echo "if (Tool$key) Tool = document.getElementById('ChxLabel$key').value;\n"; # } # if ($test['Profil'] === 'employe' and $key === 12) { # echo "var Tool$key = document.getElementById('ChxLabel$key').checked;\n"; # echo "if (Tool$key) Tool = document.getElementById('ChxLabel$key').value;\n"; # } # } ?> */ var label; if (profil === 'chef') { for (var key = 4; key < 10; key++) { label = document.getElementById('ChxLabel' + key); if (label.checked) Tool = label.value; } } if (profil === 'employe') { label = document.getElementById('ChxLabel12'); // key = 12 if (label.checked) Tool = label.value; } if (Tool === 'liste première') { fenetre = window.open('http://www.developpez.net/', '_blank'); } else if (Tool === 'liste seconde') { if (fenetre) fenetre.close(); } } </script>