J'ai la fonction Jquery suivante pour avertir l'utilisateur avec une invite quand il a des modifications non enregistrées (similaire à comment SO le fait) et essaie de quitter l'écran en cours.Pourquoi OnBeforeUnload tire-t-il deux fois avec asp: LinkButton?
<!-- in my aspx page -->
<script type="text/javascript" language="javascript">
window.onbeforeunload = function()
{
if (HasPendingUpdates())
{
return "Changes you have made will not be saved.";
}
}
</script>
Cela fonctionne comme prévu et montre la boîte de message lorsque l'utilisateur tente de cliquer sur un href pour naviguer loin ou utilisez le bouton de retour, etc. Le problème que j'ai est que l'un de mes liens est un asp:LinkButton
parce qu'il doit déclencher un code côté serveur avant de quitter la page. Lorsque l'utilisateur clique sur ce LinkButton
, ils reçoivent l'invite deux fois.
Scénarios:
- utilisateur clique sur le
LinkButton
- invite apparaît et l'utilisateur clique sur le bouton d'annulation.
L'invite disparaît et l'utilisateur est toujours à l'écran. BIEN.
utilisateur clique sur le
LinkButton
- apparaît et clique invite le bouton OK.
- L'invite disparaît et le même message s'affiche à nouveau.
- L'utilisateur clique à nouveau sur OK.
- L'invite disparaît et l'utilisateur passe à l'écran suivant et tout va bien.
Alors pourquoi est-ce que je reçois la deuxième invite ??? Comment le OnBeforeUnload tire-t-il deux fois?
Je ne suis pas déléguant l'ha ndlers spécifiquement à tous les contrôles. La fonction Jquery s'exécute lors du chargement de la page et affecte la fonction à la fenêtre.onbeforeunload. La page n'est jamais chargée plus d'une fois donc le code Jquery ne doit lier qu'une seule fois. Tous les autres liens, bouton de retour, etc ne provoquent pas une double invite. – Kelsey