是否有任何javascript事件在回发时触发?如果没有,如何在页回发之后或之前立即运行客户端代码?
qoefvg9y1#
我相信您正在寻找的是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>
我希望这会有帮助。X11E11F1X类似乎鲜为人知,也很少被利用。
nwnhqdif2#
你可以像这样在页面加载中添加javascript ...
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hello world');", true);
或
Page.ClientScript.RegisterStartupScript(this.GetType(), "alertScript", "function Hello() { alert('hello world'); }", true);
mrfwxfqh3#
请看:Run javascript function after Postback我用这个解决了我的问题:
<script type="text/javascript"> var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function (s, e) { alert('Postback!'); }); </script>
也有很多选择比如
$('#id').live('change', function (){}); $(document).ready(function () {}); ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true);
继续看你需要什么。页面请求管理器事件:https://learn.microsoft.com/en-us/previous-versions/aspnet/bb398976(v=vs.100)
6uxekuva4#
Page.ClientScript对象有一个RegisterOnSubmitStatement在任何输入提交表单后触发。这可能是也可能不是您要查找的内容,但我已经使用它通知用户可编辑表单中未保存的更改。与RegisterStartupScript相比,使用RegisterOnSubmitStatement的优势在于,如果用户使用浏览器来回导航,则使用RegisterStartupScript注入的任何脚本都可能再次触发,而RegisterOnSubmitStatement仅在用户提交表单后才运行。
kiz8lqtg5#
使用 AJAX ,并为onComplete提供一个事件处理程序。
onComplete
u1ehiz5o6#
表单标记上的onsubmit事件使用jQuery时,情况如下
$("#yourformtagid").submit(function () { ... }
xtfmy6hx7#
回发后加载页面时不会触发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放在页面模板中,有时你想把它放在页面类中。)
ClientScript.RegisterStartupScript
7条答案
按热度按时间qoefvg9y1#
我相信您正在寻找的是Sys.WebForms.PageRequestManager beginRequest Event
摘录:
在开始处理异步回发并将回发发送到服务器之前,将引发beginRequest事件。您可以使用此事件调用自定义脚本来设置请求标头或启动通知用户回发正在处理的动画。
代码示例:(来自链接)
我希望这会有帮助。X11E11F1X类似乎鲜为人知,也很少被利用。
nwnhqdif2#
你可以像这样在页面加载中添加javascript ...
或
mrfwxfqh3#
请看:Run javascript function after Postback
我用这个解决了我的问题:
也有很多选择比如
继续看你需要什么。
页面请求管理器事件:https://learn.microsoft.com/en-us/previous-versions/aspnet/bb398976(v=vs.100)
6uxekuva4#
Page.ClientScript对象有一个RegisterOnSubmitStatement在任何输入提交表单后触发。这可能是也可能不是您要查找的内容,但我已经使用它通知用户可编辑表单中未保存的更改。
与RegisterStartupScript相比,使用RegisterOnSubmitStatement的优势在于,如果用户使用浏览器来回导航,则使用RegisterStartupScript注入的任何脚本都可能再次触发,而RegisterOnSubmitStatement仅在用户提交表单后才运行。
kiz8lqtg5#
使用 AJAX ,并为
onComplete
提供一个事件处理程序。u1ehiz5o6#
表单标记上的onsubmit事件
使用jQuery时,情况如下
xtfmy6hx7#
回发后加载页面时不会触发javascript事件,但您可以将javascript添加到html模板(.aspx文件)中,并仅在页面已发布时运行它,如下所示:
如果你想定制javascript使其只在特定条件下运行(而不仅仅是任何回发),你可以在页面的类中创建一个页面级变量(protected或public),然后做类似的事情:
(没有什么反对
ClientScript.RegisterStartupScript
的,这很好--有时你想把javascript放在页面模板中,有时你想把它放在页面类中。)