Maison > interface Web > js tutoriel > Comment puis-je capturer les événements de fermeture de fenêtre du navigateur sans déclencher les soumissions de formulaires ou les hyperliens ?

Comment puis-je capturer les événements de fermeture de fenêtre du navigateur sans déclencher les soumissions de formulaires ou les hyperliens ?

Susan Sarandon
Libérer: 2024-12-07 12:56:14
original
544 Les gens l'ont consulté

How Can I Capture Browser Window Close Events Without Triggering on Form Submissions or Hyperlinks?

Capture de l'événement de fermeture de la fenêtre du navigateur tout en excluant les soumissions de formulaires et les hyperliens

L'événement beforeunload dans jQuery est conçu pour détecter le moment où un utilisateur quitte une page . Toutefois, cet événement se déclenche également lors de la soumission du formulaire, ce qui peut ne pas être souhaitable dans certains scénarios. Cet article explore une approche pour exclure les soumissions de formulaires et les hyperliens (sauf provenant d'autres cadres) de l'événement beforeunload.

Pour y parvenir, nous initialisons d'abord une variable inFormOrLink à false. Lorsqu'un utilisateur clique sur un lien hypertexte ou soumet un formulaire, nous définissons inFormOrLink sur true.

Dans le gestionnaire d'événements beforeunload, nous vérifions la valeur de inFormOrLink. Si c'est vrai, nous demandons à l'utilisateur de confirmer avec le message « Voulez-vous vraiment fermer ? » À l'inverse, si inFormOrLink est faux, nous renvoyons null pour supprimer l'invite de confirmation.

Voici un extrait de code révisé pour les versions 1.7 et supérieures de jQuery :

var inFormOrLink = false;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });

$(window).on("beforeunload", function() {
  return inFormOrLink ? "Do you really want to close?" : null; 
});
Copier après la connexion

Pour les versions jQuery inférieures à 1.7, utilisez le code suivant :

var inFormOrLink = false;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
});
Copier après la connexion

Cette approche capture efficacement l'événement de fermeture de la fenêtre du navigateur tout en excluant les soumissions de formulaire et hyperliens (sauf provenant d'autres cadres).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal