Question

Lorsqu'un utilisateur quitte une page de mon site, il devrait y avoir un message d'avertissement qui donne à l'utilisateur la possibilité de rester sur la page:

« Etes-vous sûr que vous voulez fermer cette page? »

Il n'a pas d'importance si la page suivante est une page interne ou externe.

Je pensais que cela pourrait être fait avec le gestionnaire d'événements onUnload, ne pouvait pas?

<body onunload="confirmClose()">

La fonction ConfirmationFermer () doit alors montrer une boîte de message avec deux boutons afin que l'utilisateur peut choisir entre « laisser vraiment » ou « Stay ».

function confirmClose() {
    return confirm('Really leave this page?')
}

Mais cette fonction ne peut pas arrêter le déchargement, droit?

Avez-vous une solution pour mon problème? Merci d'avance!

Était-ce utile?

La solution

Vous pouvez ajouter un événement onbeforeunload. Notez qu'il peut uniquement retourner une chaîne de texte à inclure dans la boîte de dialogue du navigateur affiche lorsque l'événement est appelé. Vous ne pouvez pas modifier la boîte de dialogue au-delà, et vous ne pouvez déclencher votre propre confirm que vous essayez de le faire.

Je note que cela est très, très ennuyeux comportement, sauf dans quelques situations particulières. À moins que vous me sauver de la perte de données importantes avec cela, s'il vous plaît ne le faites pas.

Autres conseils

Vous ne pouvez fournir le texte. Le navigateur gère la boîte de dialogue (raisons de sécurité). Voici un code que vous pouvez utiliser:

window.onbeforeunload = function (e) {
    var e = e || window.event;
    var msg = 'Are you sure you want to leave?';

    // For IE and Firefox
    if (e) {
        e.returnValue = msg;
    }

    // For Safari / chrome
    return msg;
}

Essayez ceci sur différents navigateurs, cependant. Vous remarquerez que le message doit être construit différemment selon la formulation de dialogue des différents navigateurs.

Voici ce que j'utilise:

if (IsChrome) {
    return 'You were in the middle of editing. You will lose your changes if you leave this page';
} else {
    return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).';
}

Le navigateur prend en charge l'affichage de la fenêtre de confirmation. Vous devez retourner la chaîne avec le message que vous souhaitez poser. , Vous pouvez également utiliser onbeforeunload pour la compatibilité du navigateur croix.

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