Javascript

Comment repérer la fermeture du navigateur avec JavaScript ?

Bienvenue dans ce guide, où nous vous expliquerons comment détecter la fermeture du navigateur en utilisant JavaScript.

Contexte

Les fermetures sont polyvalentes, encapsulant données et comportements, idéales pour la gestion de données privées, d’événements, fonctions de rappel, etc. Elles offrent une flexibilité et un contrôle accrus dans le développement JavaScript, permettant de gérer des variables externes de manière sécurisée et efficace.

Dans le développement de sites interactifs, il est souvent nécessaire de détecter rapidement la fermeture du navigateur par l’utilisateur. L’événement onUnload ne différencie pas les fermetures liées à la navigation, la mise à jour ou le changement d’URL. Heuresement, il existe plusieurs méthodes pour aborder cette problématique et obtenir plus d’informations sur la fermeture du navigateur, ainsi que sur les raisons de cette fermeture.

Qu’est ce qu’une fermeture en Javascript ?

Les fermetures en JavaScript sont des fonctions qui conservent des références aux variables de leur environnement externe. En maintenant la portée externe dans leur portée interne, les fermetures deviennent puissantes pour gérer des variables externes.

Les fermetures en JavaScript sont puissantes, car elles permettent aux fonctions d’accéder aux variables de leur environnement externe, même après la fin de son exécution, en maintenant la portée externe dans leur propre portée interne. Cette caractéristique les rend extrêmement utiles dans de nombreuses situations.

Exemple

Supposons que nous ayons une fonction externe nommée « outerFunction » qui définit une variable « x » et une fonction interne « innerFunction ». La fonction « innerFunction » peut accéder à la variable « x » de la fonction « outerFunction », même si « outerFunction » a déjà été exécutée.

function outerFunction() {
var x = 10; // Variable locale à outerFunction

function innerFunction() {
console.log(x); // innerFunction accède à la variable x de outerFunction
}

return innerFunction; // outerFunction renvoie innerFunction
}

var closure = outerFunction(); // Closure détient maintenant une référence à innerFunction
closure(); // Cela affichera 10, même si outerFunction a terminé son exécution

Une fermeture en JavaScript permet à une fonction interne d’accéder aux variables de la fonction externe, même après la fin de l’exécution de cette dernière. Dans cet exemple, la variable closure détient une référence à `inner

Comment détecter la fermeture du navigateur en JavaScript ?

Pour détecter la fermeture du navigateur en JavaScript, il est essentiel de comprendre que l’événement « onUnload » n’est pas suffisant pour faire la distinction entre une fermeture due à différentes raisons. Cela est dû à sa nature limitée et à son incapacité à fournir des informations spécifiques sur la manière dont la page est fermée.

Cependant, il existe plusieurs méthodes pour aborder cette problématique et obtenir plus d’informations sur la fermeture du navigateur, ainsi que sur les raisons de cette fermeture. Voici quelques-unes de ces méthodes possibles :

Utilisation de l’événement « beforeUnload » pour détecter la fermeture du navigateur


L’événement « beforeUnload » permet de détecter la fermeture du navigateur avant qu’elle ne se produise. Vous pouvez utiliser cet événement pour afficher un message de confirmation à l’utilisateur ou effectuer des actions spécifiques avant la fermeture. Toutefois, il ne fournit pas d’informations détaillées sur la cause de la fermeture.

window.addEventListener("beforeunload", function (e) {
  // Actions à effectuer avant la fermeture
  // Vous pouvez afficher un message de confirmation ici
});

Reconnaître la fermeture du navigateur

l’utilisation de l’événement onUnload ne permet pas de faire la distinction entre une fermeture due à une navigation normale, une mise à jour de la page ou un changement d’URL.

Pour surmonter cette limitation, voici un script simple qui reconnaît la fermeture du navigateur et permet d’effectuer des actions spécifiques. Commençons par examiner ce qui doit être inclus sur la page à surveiller :

<body onUnload="window.open('chkclose.htm','chk');">

Exemple

window.addEventListener(« beforeunload », function (e) {
// Actions spécifiques avant la fermeture
// Par exemple, afficher un message de confirmation
var confirmationMessage = « Êtes-vous sûr de vouloir quitter la page ? »;
(e || window.event).returnValue = confirmationMessage;

// Ouvrir la page chkclose.htm dans une nouvelle fenêtre
window.open(‘chkclose.htm’, ‘chk’);
return confirmationMessage;
});

L’utilisation de window.open(‘chkclose.htm’, ‘chk’); dans le code permet d’ouvrir une nouvelle fenêtre de navigateur avec le contenu de chkclose.htm. Cela se produit avant la fermeture de la page actuelle. Cette technique peut être utilisée pour effectuer des actions spécifiques en cas de fermeture de la page, comme afficher un message de confirmation à l’utilisateur. L’utilisation de chkclose.htm permet de personnaliser le contenu de la nouvelle fenêtre ouvert en cas de fermeture. Vous pouvez y inclure des informations de déconnexion, des instructions ou tout autre contenu pertinent pour l’utilisateur avant de quitter la page.

Suivi des actions de l’utilisateur :


Une autre approche consiste à suivre les actions de l’utilisateur, telles que la pression de la touche « F5 » pour rafraîchir la page ou les clics sur des liens sortants. Vous pouvez ajouter des gestionnaires d’événements pour ces actions et agir en conséquence.

document.addEventListener("keydown", function (e) {
  if (e.key === "F5") {
    // L'utilisateur a appuyé sur la touche F5 (actualisation)
    // Réagir en conséquence
  }
});

// Vous pouvez également ajouter des gestionnaires d'événements pour les liens sortants

Utilisation d’une page de déconnexion :


Créez une page de déconnexion dédiée qui permet à l’utilisateur de se déconnecter de manière contrôlée avant de quitter la page. Vous pouvez rediriger l’utilisateur vers cette page lorsqu’il souhaite se déconnecter ou fermer la fenêtre.

<!DOCTYPE html>
<html>
<head>
    <title>Déconnexion</title>
</head>
<body>
    <h1>Déconnexion</h1>
    <p>Êtes-vous sûr de vouloir vous déconnecter ?</p>
    <button id="deconnexionBtn">Déconnexion</button>
</body>
</html>

Dans le fichier JavaScript associé à votre site (par exemple, « script.js »), vous pouvez ajouter le code suivant pour gérer la déconnexion :

// Assurez-vous d'inclure ce fichier JavaScript sur vos pages où vous avez besoin de gérer la déconnexion.

// Sélectionnez le bouton de déconnexion par son ID
const deconnexionBtn = document.getElementById("deconnexionBtn");

// Ajoutez un gestionnaire d'événements pour le clic sur le bouton de déconnexion
deconnexionBtn.addEventListener("click", function () {
    // Effectuez les actions de déconnexion ici, par exemple :
    // 1. Mettre à jour les informations de session côté serveur.
    // 2. Rediriger l'utilisateur vers une page de confirmation ou de déconnexion réussie.
    window.location.href = "confirmation_deconnexion.html"; // Remplacez "confirmation_deconnexion.html" par la page de confirmation souhaitée.
});

Communication avec le serveur :


Établissez une communication avec le serveur pour signaler la fermeture de la page. Vous pouvez envoyer une requête au serveur pour enregistrer la fermeture ou effectuer des actions spécifiques. Cette méthode peut être plus précise pour recueillir des informations sur la fermeture.

AZ

Recent Posts

Modèle Excel Calcul Section de Câble : Outil Automatisé pour Dimensionner une Installation Électrique

Derrière chaque tableau électrique, chaque moteur ou chaque circuit d’alimentation se cache un élément souvent…

2 jours ago

Fiche de Traçabilité HACCP : Modèle Word Complet et Professionnel

Une fiche de traçabilité HACCP n'attire généralement l'attention que lorsqu'une information devient difficile à retrouver.…

2 jours ago

Différence entre DLC et DDM : deux dates, deux significations, deux niveaux de risque

Deux dates figurent régulièrement sur les emballages alimentaires : la DLC et la DDM. Souvent…

2 jours ago

Logiciel de gestion de parc matériel gratuit : centraliser, suivre et maîtriser ses équipements sans investissement lourd

Ordinateurs, imprimantes, véhicules, outils industriels, équipements informatiques, appareils de mesure ou matériels de chantier :…

2 jours ago

Fiche de Traçabilité Alimentaire Word : Modèle Principal et Fiches Complémentaires

Chaque produit alimentaire laisse derrière lui une multitude d'informations souvent invisibles pour le consommateur :…

2 jours ago

Tableau DLC Excel : cuisines, laboratoires et unités agroalimentaires

La scène est familière. Un lundi matin, quelques minutes avant le début du service, un…

3 jours ago

This website uses cookies.