Question

Comment pouvons-nous détecter lorsqu'un utilisateur ouvre une nouvelle fenêtre. L'utilisateur est déjà authentifié et nous utilisons beaucoup de sessions.

Nous essayions d'éviter les Ctrl + N javascript, mais c'est peut-être une option.

Je suppose que la demande correspond exactement à l'URL ... avec Ctrl + N ?

Était-ce utile?

La solution

  

Nous essayions d'éviter les crochets javascript ctrl-n

Oublie ça. En théorie, vous pouvez essayer d’attraper les événements de pression de touche pour & n ° 8216; n & 8217; avec le modificateur de touche de contrôle, il existe un certain nombre d'autres moyens d'ouvrir une nouvelle fenêtre ou un nouvel onglet qui sont plus susceptibles d'être utilisés, et vous ne pourrez pas les intercepter. Fichier- > Nouvelle fenêtre / Onglet, clic du bouton du milieu ou Maj-clic, boutons Précédent / Suivant du clic du milieu, clic-droit de la souris dans la nouvelle fenêtre, ouvrez le signet dans un nouvel onglet, double-cliquez sur l'icône du navigateur ...

  

L'utilisateur est déjà authentifié et nous utilisons beaucoup les sessions.

Cela ne devrait pas être un problème en soi. Ce que vous voulez dire, c’est que votre application décharge toutes sortes de données spécifiques à une page dans la session qu’elle ne devrait pas avoir, et que vous trouvez maintenant les ruptures d’application lorsque vous avez plusieurs fenêtres ouvertes dessus? Eh bien, les commisérations et bonne réécriture.

En attendant, tout ce que vous pouvez faire, c'est informer l'utilisateur de ne pas essayer d'ouvrir deux fenêtres de navigateur sur la même application & # 8221 ;. Il existe des moyens potentiels de rendre JavaScript sur une page en remarquant que JavaScript s'exécute en même temps sur une autre page du même domaine, impliquant généralement l'utilisation de document.cookie en tant que canal de communication inter-page. Mais c’est aussi un peu fragile.

Autres conseils

Si l'ouverture d'une nouvelle fenêtre pose un problème dans votre application, vous devez corriger le code de l'application pour le gérer au lieu d'essayer d'appliquer un "bandage" incohérent et non fiable côté client. C'est mon avis.

Pourquoi?

Et de toute façon, vous ne pouvez pas le détecter. L'utilisateur peut ouvrir une nouvelle fenêtre non seulement avec Ctrl + N mais aussi avec Fichier- > Nouvelle fenêtre .

Vous pouvez éventuellement définir un nombre de fenêtres dans la session et l'incrémenter dans window.onload et le décrémenter dans window.onunload .

Imagine-moi en train de tutoyer, de sucer de l’air entre mes dents et d’aller "mieux que toi, guvna". si vous utilisez cela, cependant.

Ce que j'ai fait pour résoudre ce problème est lorsque l'utilisateur s'authentifie, attribuez le nom de la fenêtre à une connexion valide.

<script>

window.name = 'oneWindow';

</script>

Ensuite, sur la page principale, effectuez une vérification javascript:

<script>

if (window.history.length == 0 || window.name != 'oneWindow') 

//history length to see if it's a new tab or opened in a new window  0 for IE, 1 for FF

//window name to see if it's a CTRL + N new window

</script>

Si la vérification est vraie, masquez / supprimez le contenu principal de la page et affichez un message indiquant qu'ils agissent de manière non prise en charge.

Ceci fonctionne lorsque votre page de connexion n'est pas liée à la page maître.

Si vous ne disposez pas d'une page maître, je vous suggère de cocher toutes vos pages.

Oui et non,

Vous le verrez toujours si un contrôle a le focus, sinon l'événement est envoyé directement au navigateur et le code de la page n'en a jamais entendu parler.

D'après mon expérience, vous ne pouvez pas détourner le raccourci du navigateur, votre kilométrage peut varier. Vous êtes susceptible de savoir que c'est arrivé, mais le navigateur va faire son travail (pour une raison évidente)

Dans la plupart des navigateurs, Ctrl - N a pour effet d'ouvrir une nouvelle fenêtre avec la même URL que l'ancienne et de l'associer au même ID de session.

Votre meilleur choix serait de modifier le code d’arrière si possible et de permettre de telles choses. Briser la fonctionnalité du navigateur n'est jamais une bonne chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top