2010-08-15 3 views
1

Ceci est un peu Javascript ajouté sur une page .aspx:Accrocher Une fonction javascript à chaque postback

<Head> 
<script> 
function SayHello() 
{ 
    alert('Hello'); 
} 
</script> 

et voici comment je l'appelle à partir du code:

protected void Page_Init(object sender, Eventargs e) 
{ 
    Page.ClientScript.RegisterStartupScript(Page.GetType(),"script","SayHello()",true); 
} 

Le problème est que la La fonction Javascript est appelée une seule fois, dès le premier chargement de la page. Je veux qu'il soit appelé à chaque publication. par exemple sur chaque clic de bouton

+0

qu'entendez-vous par chaque bouton clic .... – Azhar

Répondre

0

Créez une sous-classe du contrôle Button et utilisez-la sur vos pages. Il a la propriété OnClientClick que vous pouvez déjà prédéfinir dans votre sous-classe.

0

Je recommande une méthode pur JavaScript, comme l'ajout de l'appel à la fonction Javascript dans l'événement corps onload:

<body onload="sayHello();"> 

Ou en utilisant la bibliothèque jQuery pour accrocher l'événement onReady du document:

$(document).ready(function() { sayHello(); }); 
+0

Même si je suis d'accord avec la suggestion javascript, vous êtes incorrect sur le cycle de vie asp.net. L'événement Page_Init est déclenché à chaque publication. – hofnarwillie

+0

@hofnarwillie Vous avez tout à fait raison! Je ne sais pas où j'ai ramassé cette idée fausse. J'ai corrigé la réponse; Merci! – attack

0

Vous pouvez simplement utiliser onload événement:

<body onload="SayHello()"> 

</body> 

...

Si vous utilisez UpdatePanel (AJAX), alors vous devez vous inscrire script comme ceci:

System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(), "key", "SayHello()", true);