Maison > interface Web > js tutoriel > Comment puis-je envoyer de manière fiable des requêtes AJAX et exécuter des scripts avant qu'un utilisateur ne ferme une fenêtre de navigateur ?

Comment puis-je envoyer de manière fiable des requêtes AJAX et exécuter des scripts avant qu'un utilisateur ne ferme une fenêtre de navigateur ?

Patricia Arquette
Libérer: 2024-11-30 14:30:15
original
571 Les gens l'ont consulté

How Can I Reliably Send AJAX Requests and Execute Scripts Before a User Closes a Browser Window?

Gérer la fermeture de la fenêtre pour les requêtes et les scripts AJAX en JavaScript

Défi

Les utilisateurs peuvent quitter une page Web de différentes manières, notamment en fermant la fenêtre ou en naviguant loin via une autre URL. Déterminer le moment où un utilisateur quitte la page et déclencher les actions correspondantes peut être un défi.

Solution

Mise à jour 2024 :

  • API Beacon : L'API Beacon offre une solution fiable dans les navigateurs modernes, garantissant que les requêtes sont terminées même lorsque les utilisateurs quittent le page.
  • Événement de changement de visibilité : Cet événement capture le dernier changement d'état observable dans la plupart des navigateurs, y compris les transitions de l'état passif à l'état caché.

Mise en œuvre

Changement de visibilité Événement :

document.addEventListener('visibilitychange', function() {
  if (document.visibilityState === "hidden") {
    // Trigger AJAX request or run script
  }
});
Copier après la connexion

API Beacon :

var url = "https://example.com/foo";
var data = "bar";

navigator.sendBeacon(url, data);
Copier après la connexion

Détails

L'API Beacon est conçue pour répondre aux requêtes même lorsque les utilisateurs quitter la page. Il est recommandé d'utiliser l'événement visiblechange pour détecter le moment où l'utilisateur a quitté la page et déclencher la requête Beacon à ce stade.

Bibliothèque Lifecycle.js (pour les navigateurs plus anciens) :

Pour la compatibilité avec les anciens navigateurs, pensez à utiliser la bibliothèque lifecycle.js pour gérer la page cycle de vie.

Considérations

  • Bloqueurs de publicité : Les bloqueurs de publicité peuvent bloquer les requêtes Beacon vers certains domaines de suivi.
  • Demandes intersites : Les demandes de balises suivent les restrictions CORS et incluent des cookies, assurez-vous donc d'une configuration appropriée pour l'origine croisée demandes.

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!

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