页面回发上的Javascript事件

时间:2010-02-16 21:47:44

标签: c# asp.net javascript

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

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

7 个答案:

答案 0 :(得分:5)

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

<强>摘录:

  

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

代码示例:(来自链接)

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args)
    {
        var elem = args.get_postBackElement();
        ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');
    }
    function EndRequestHandler(sender, args)
    {
        ActivateAlertDiv('hidden', 'AlertDiv', '');
    }
    function ActivateAlertDiv(visstring, elem, msg)
    {
        var adiv = $get(elem);
        adiv.style.visibility = visstring;
        adiv.innerHTML = msg;                     
    }
</script>

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

答案 1 :(得分:4)

您可以在页面加载中添加javascript,如下所示......

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

OR

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

答案 2 :(得分:3)

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

Run javascript function after Postback

我用这个解决了我的问题:

<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
    alert('Postback!');
});

也有很多选择,比如

$('#id').live('change', function (){});

$(document).ready(function () {});
ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true);

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

问候=)

答案 3 :(得分:2)

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

使用RegisterStartupScript的优势在于,使用RegisterOnSubmitStatement,如果用户使用浏览器导航和返回,使用RegisterStartupScript注入的任何脚本都可能再次触发,而RegisterOnSubmitStatement仅在用户提交了形式。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

表单标记

上的onsubmit事件

使用jQuery时就像这样

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

答案 6 :(得分:1)

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

<script type='text/javascript'>
    var isPostBack = '<%= this.IsPostBack%>' == 'True';
    if (isPostBack) {
        alert('It's a PostBack!');
    }
</script>

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

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

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