页面回发上的Javascript事件

是否有任何在回发时触发的javascript事件?

如果没有,我如何在页面回发之后或之前立即运行客户端代码?

我相信你要找的是Sys.WebForms.PageRequestManager beginRequest事件

摘抄:

在开始处理异步回发之前引发beginRequest事件,并将回发发送到服务器。 您可以使用此事件来调用自定义脚本来设置请求标头或启动动画,以通知用户正在处理回发。

代码示例:(来自链接)

 

我希望有所帮助。 PageRequestManager类似乎鲜为人知并且很少使用。

您可以像这样在页面加载中添加javascript …

 Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hello world');", true); 

要么

 Page.ClientScript.RegisterStartupScript(this.GetType(), "alertScript", "function Hello() { alert('hello world'); }", true); 

我不知道你是否仍然需要,但看看这个:

在Postback之后运行javascript函数

我使用这个来解决我的问题:

  

还有很多选择,比如

 $('#id').live('change', function (){}); $(document).ready(function () {}); ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true); 

并继续前进。 取决于你需要什么。

问候=)

表单标记上的onsubmit事件

使用jQuery时就像这样

 $("#yourformtagid").submit(function () { ... } 

Page.ClientScript对象具有RegisterOnSubmitStatement在任何输入提交表单后触发。 这可能是您正在寻找的,也可能不是,但我已经用它来通知用户可编辑表单中未保存的更改。

使用RegisterStartupScript的优势在于,使用RegisterOnSubmitStatement,如果用户使用浏览器导航和返回,则使用RegisterStartupScript注入的任何脚本都可能再次触发,而RegisterOnSubmitStatement仅在用户提交表单时才会运行。

使用AJAX,以及onComplete的事件处理程序。

在回发后加载页面时没有触发javascript事件,但是您可以将javascript添加到您的html模板(.aspx文件),并且仅在页面发布时运行它,如下所示:

  

如果您想自定义javascript只在特定条件下运行(而不仅仅是任何回发),您可以在页面的类中创建页面级变量(protected或public)并执行类似的操作:

 var userClickedSubmit = '<%= this.UserClickedSubmit%>' == 'True'; if (userClickedSubmit) { // Do something in javascript } 

(对于ClientScript.RegisterStartupScript没有任何意义,这很好 – 有时您希望将javascript保留在页面模板中,有时您希望将其保留在页面类中。)