2009-12-28 2 views
0

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:Demandez si l'utilisateur est sûr de quitter le site (XHTML/JavaScript)

"Es-tu sûr de vouloir fermer cette page?"

Peu importe si la page suivante est une page interne ou externe.

Je pensais que cela pouvait être fait avec le gestionnaire d'événement onUnload, n'est-ce 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, non?

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

+6

J'ai une solution à votre problème: ne demandez pas à l'utilisateur de confirmer quitter votre site. Ce n'est rien mais ennuyeux. –

+6

Il y a des utilisations légitimes pour ceci, par exemple quand il y a une entrée d'utilisateur qui serait perdue en quittant la page. –

+0

Je dois être d'accord avec vous deux. C'est vraiment énervant mais peut être utile, cependant. Je veux l'utiliser dans un cas adéquat où il empêche l'utilisateur de perdre des données. – caw

Répondre

4

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

Je note que c'est un comportement très, très ennuyeux sauf dans quelques situations spécifiques. Sauf si vous me sauvez de la perte de données importante avec ceci, s'il vous plaît ne le faites pas.

+0

Merci beaucoup! Toutes les réponses étaient bonnes et utiles - mais je dois en choisir un comme le meilleur. ;) Donc, je choisis votre. – caw

1

Le navigateur prend en charge l'affichage de la fenêtre de confirmation. Vous devez renvoyer la chaîne avec le message que vous souhaitez demander. En outre, vous pouvez utiliser onbeforeunload pour la compatibilité croisée de navigateur.

5

Vous ne pouvez fournir que 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. Vous remarquerez que le message doit être construit différemment en fonction du libellé de la boîte de dialogue des différents navigateurs.

Voici ce que j'utiliser:

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).'; 
} 
Questions connexes