2009-10-12 5 views
-1

Sur StackOverflow, lorsque vous posez une nouvelle question, vous avez saisi la question et si vous décidez de quitter la page, vous obtenez une confirmation «Are you sure».Demander confirmation à la page décharger

Je voudrais faire la même chose dans mon application ASP.Net:

L'utilisateur doit remplir un questionnaire et a la possibilité de stocker ses réponses Temporarely. Si l'utilisateur décide de s'éloigner de la page sans stocker temporairement ses réponses, nous aimerions recevoir une confirmation pour afficher une fenêtre et demander à l'utilisateur de stocker ses réponses.

Deux questions:

  • Quelle est une façon décente de montrer la fenêtre de confirmation avant que la page en décharge ASP.Net?
    Je suis conscient de l'événement beforeunload, mais je ne veux pas en faire un grand hack javascript.

  • Je ne veux pas la confirmation de botter lorsque l'utilisateur clique sur le bouton Enregistrer (qui est de sauver les réponses de toute façon)

Répondre

5

Vous devez écrire l'action dans

onbeforeunload Event

qui se déclenche avant qu'une page soit déchargée.

<HTML> 
<head> 
<script> 
function closeIt() 
{ 
    return "Any string value here forces a dialog box to \n" + 
     "appear before closing the window."; 
} 
window.onbeforeunload = closeIt; 
</script> 
</head> 
<body> 
    <a href="http://www.microsoft.com">Click here to navigate to 
     www.microsoft.com</a> 
</body> 
</html> 
+0

Je suis au courant de l'événement onbeforeunload. Cependant, vous devrez vous pirater dans le formulaire soumettre ou cliquer sur le bouton pour faire l'exception pour ce bouton spécifique. Je me demandais s'il y avait une meilleure façon de le faire avec ASP.net. Thnx. – Zyphrax

0

Vous devez payer votre attention sur "onbeforunload" event En ce qui concerne le bouton Enregistrer vous ne pouvez faire une logique de script, par exemple résilier votre abonnement sur cet événement ou autre.

+0

Même remarque que la réponse ci-dessus. – Zyphrax

+1

Ne suis pas d'accord avec "tu vas devoir te pirater" il est très facile d'écrire une telle logique. Il n'y a pas de meilleur moyen et surtout dans ASP.NET qui est aussi faible avant la logique du client. – Restuta

0

Vous pouvez essayer ceci:

<button onclick="javascript:doSend()">send</button> 
<button onclick="window.xbuttons +='save ';">save</button> 
<button onclick="window.xbuttons +='edit';">edit</button> 
<script> 
    window.xbuttons = ''; 
    window.onbeforeunload = function(){ 
     if(!window.xbuttons.match(/save|edit/)) 
     return "Do you want to leave this page?"; 
    } 
</script> 

Voici les choses que vous devez noter sur onbeforeunload:

  1. onbeforeunload événement se déclenche sur tous les un (éléments d'ancrage) avec l'attribut href
  2. onbeforeunload l'événement se déclenche lorsque l'emplacement du document est modifié via javascript ou en changeant l'URL sur la barre d'adresse
  3. OnBeforeUnload événement se déclenche sur un événement qui utilise javascript: pseudo-protocole
Questions connexes