gpt4 book ai didi

javascript - 如何控制在 UpdatePanel 部分回发 endRequest 之后运行哪些 JavaScript?

转载 作者:数据小太阳 更新时间:2023-10-29 05:05:01 24 4
gpt4 key购买 nike

我知道我可以在每次部分回发后连接到客户端事件以运行 JavaScript;但是,我想做这样的事情:

protected void FooClicked(object sender, EventArgs e) {
ClientScript.RegisterStartupScript(GetType(), "msg", "showMsg('Foo clicked');",true);
}

我知道我完全可以用隐藏字段破解它并在每次 回发后运行一些东西,但应该有一种非常直接的方式以类似的方式进行。

最佳答案

您所描述的特定代码示例不适用于部分回发,因为 ClientScript.RegisterStartupScript() 在请求生命周期的输出构建阶段将 JS 写入页面;而部分回发仅通过 JavaScript 更新页面的选定部分(即使整个页面的标记,包括您的启动脚本,都是在服务器上生成的)。

为了紧密模仿您所描述的内容,您应该在 UpdatePanel 中包含一个 Literal 控件,并在部分回发期间将内容面板的 Text 属性设置为您希望运行的脚本:

myLiteral.Text = "<script type=\"JavaScript\">doStuff();</script>";

IMO,更合适的方法是使用 client-side API for async postbacks注册一个事件处理程序以在回发完成时运行:

function endRequestHandler(sender, args) {
doStuff();
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

如果您需要将回发期间生成的信息传递给处理程序,您可以通过隐藏字段传递该信息,并在客户端处理程序中从 DOM 中获取该信息。

关于javascript - 如何控制在 UpdatePanel 部分回发 endRequest 之后运行哪些 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com