2009-10-13 5 views
2

J'ai trouvé que si vous appuyez sur F5 ou que vous actualisez à partir de la fenêtre du navigateur, le dernier événement se déclenche à nouveau. Par ex. J'ai cliqué sur un bouton, l'événement bouton est effectué normalement, mais si j'appuie sur F5 à partir de la fenêtre du navigateur, le même événement est renvoyé.Événement de clic de bouton appelé à nouveau lorsque la page est actualisée à l'aide de F5

Quelqu'un a-t-il une idée?

Merci de partager votre précieux temps.

Répondre

5

Selon NinenthSense, c'est la façon dont le navigateur réagit lorsque l'utilisateur actualise la page.

Si vous voulez encore vous pouvez aller pour restreindre javascript comme ci-dessous

//to avaoid pressing F5 key 

document.onkeydown = function() 
{ 
      if(event.keyCode==116) { 
      event.keyCode=0; 
      event.returnValue = false; 
      } 
} 

//to avoid refresh, using context menu of the browser 

document.oncontextmenu = function() {event.returnValue = false;} 
+0

de bien vouloir voter quand u accepter la réponse – solairaja

1

Ce n'est pas un bug. C'est par conception. Lorsque vous appuyez sur F5/Actualiser, la même demande est envoyée au serveur.

4

Si vous voulez vider complètement la page après une publication se produit afin qu'il ne se déclenche pas à nouveau, vous pouvez réponse. Rediriger vers la même page Cela prend en gros toute votre chaîne de requête et renvoie le navigateur, effaçant tous les messages dans le processus. Je le fais souvent après une routine Save() pour ramener la page à un état "normal". Cela fonctionne bien aussi si votre routine de sauvegarde met à jour une base de données, et vous avez des éléments d'interface utilisateur sur la page qui lit à partir de la base de données, alors vous n'avez pas à vous soucier de recharger ces éléments avec les nouvelles données.

Vous pouvez également ajouter une méthode d'extension pour frapper ce rapidement comme ceci:

public static class Extensions 
{ 
    public static void Reload(this Page page) 
    { 
     page.Response.Redirect(page.Request.Url.AbsoluteUri); 
    } 
} 

Ensuite, vous appelez cette méthode dans votre code comme ceci:

private void SaveCrap() 
{ 
    SavemeBlahBlah(); // save to dbase 
    this.Page.Reload(); 
} 
Questions connexes