Question

Supposons que je souhaite avoir un lien ou un bouton qui, lorsque l'utilisateur clique dessus, ferme le navigateur sans boîte de dialogue de confirmation.

Il doit fonctionner sous Internet Explorer 6, 7, 8 et Firefox.

Était-ce utile?

La solution

J'ai fait des recherches et découvert qu'il n'est pas possible de fermer fenêtre / onglet dans Firefox si cette fenêtre / onglet n'est pas ouvert via JavaScript ou si l'onglet contient des pages d'historique > 1 (cliquez sur le bouton Précédent parce que vous naviguez dans les pages Web).

Façon de faire dans Firefox: supprimez d’abord l’historique. Ensuite, vous pouvez fermer la fenêtre sans boîte de confirmation. Je n'ai pas essayé cette solution. Il m'est arrivé de lire plusieurs pages fiables décrivant comment procéder.

Solution pour Internet Explorer 6, 7, 8.

Avec un peu d'aide de la fonction de détection de navigateur: http://www.quirksmode.org/js /detect.html , voici comment fermer une fenêtre sans boîte de confirmation pour plusieurs versions d’IE.

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

Je sais que certains d'entre vous pourraient penser que l'utilisation de la détection de navigateur n'est pas une bonne idée. En outre, beaucoup pensent que forcer les utilisateurs à fermer la fenêtre est une mauvaise chose. Je suis d'accord avec ces idées. Mais j’en ai juste besoin à cause de la configuration logicielle requise.

J'espère que cela vous aidera.

Autres conseils

Ce serait une atteinte majeure à la sécurité. Vous ne pourrez jamais faire cela.

Vous pouvez cependant fermer les fenêtres enfants ouvertes par le parent. Supposons que vous ayez ouvert une fenêtre contextuelle avec une fenêtre parent. Cette même fenêtre parent peut comporter un bouton permettant de fermer l'enfant. Jamais le navigateur.

Je pense qu'une partie du problème ici est que vous n'êtes pas clair sur votre objectif dans la question. D'après votre commentaire sur la réponse de Frankie, il semble que vous n'ayez pas vraiment besoin de fermer la fenêtre, vous devez simplement sécuriser le contenu disponible dans la fenêtre.

Voici ce que je recommande:

  1. Supprimez la session connectée en fonction d'un délai d'attente (côté serveur). Lorsque le délai est écoulé, le rechargement de la page ne doit être redirigé que vers la page de connexion.
  2. Côté client, vérifiez périodiquement les conditions de délai d'attente et redirigez-les vers une page de connexion ou vers une autre page inutile. "

Franchement, il est généralement préférable de garder un utilisateur sur votre site jusqu'au moment où il souhaite fermer l'onglet ou naviguer de toute autre manière. Il suffit de les rediriger vers une page de destination qui n'a pas besoin d'être sécurisée au lieu d'essayer de forcer la fermeture de l'onglet.

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