Maison >interface Web >js tutoriel >Comment implémenter une « page de congé ? » Confirmation des modifications non enregistrées ?

Comment implémenter une « page de congé ? » Confirmation des modifications non enregistrées ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 15:50:14418parcourir

How to Implement a

Comment implémenter le message « Êtes-vous sûr de vouloir quitter cette page ? » Confirmation lorsque des modifications non enregistrées existent

Lors de la navigation sur des pages Web, les utilisateurs peuvent rencontrer une invite de confirmation qui apparaît avant de quitter une page sur laquelle des modifications non enregistrées ont été apportées. Cette confirmation sert à alerter les utilisateurs que leurs modifications non enregistrées seront perdues s'ils continuent. Cet article explore comment implémenter cette fonctionnalité, en abordant les défis spécifiques rencontrés dans les navigateurs dotés de différentes capacités.

Une méthode consiste à exploiter l'événement window.onbeforeunload. Historiquement, cet événement pouvait se voir attribuer une valeur de chaîne pour afficher un message de confirmation personnalisé, mais les navigateurs modernes considèrent cela comme un risque pour la sécurité et n'affichent désormais que des messages génériques. En conséquence, la mise en œuvre a été simplifiée comme suit :

// Enable navigation prompt
window.onbeforeunload = function() {
    return true;
};

// Remove navigation prompt
window.onbeforeunload = null;

Pour la prise en charge des navigateurs existants, une approche plus complète est requise. L'événement window.onbeforeunload doit se voir attribuer une référence de fonction, et dans les anciens navigateurs, la propriété returnValue de l'événement doit être définie :

var confirmOnPageExit = function (e) {
    // Get the event object
    e = e || window.event;

    // Set the return value to display the message
    if (e) {
        e.returnValue = 'Confirm exit? Unsaved changes will be lost.';
    }

    // Return the message for newer browsers
    return 'Confirm exit? Unsaved changes will be lost.';
};

Pour activer/désactiver l'invite de confirmation, attribuez simplement la fonction confirmOnPageExit à window. onbeforeunload pour l'activer et supprimer la fonction pour le désactiver :

// Turn it on
window.onbeforeunload = confirmOnPageExit;

// Turn it off
window.onbeforeunload = null;

Pour suivre les modifications non enregistrées, il faut s'appuyer sur le cadre de validation spécifique utilisé. Par exemple, dans jQuery, l'extrait de code suivant montre comment surveiller les modifications apportées aux champs de saisie et déclencher l'invite de confirmation :

$('input').change(function() {
    if( $(this).val() != "" ) {
        window.onbeforeunload = confirmOnPageExit;
    }
});

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:
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