在ASP.Net中运行javascript时的执行顺序
execution order when running a javascript inside ASP.Net
我不了解ASP.net。我试图在网页上添加一个确认弹出窗口。我使用了以下代码:(这是一个变体:http://www.codeproject.com/Articles/8173/A-Simple-ASP-NET-Server-Control-Message-Box-Confir)
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;
namespace BunnyBear
{
[DefaultProperty("Text"),
ToolboxData("<{0}:msgBox runat=server></{0}:msgBox>")]
public class msgBox : System.Web.UI.WebControls.WebControl
{
//private string msg;
private string content;
[Bindable(true),
Category("Appearance"),
DefaultValue("")]
public void confirm2(string msg)
{
string sMsg = msg.Replace("'n", "''n");
sMsg = msg.Replace("'"", "'");
StringBuilder sb = new StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@" if(confirm( """ + sMsg + @""" ))");
sb.Append(@" { }");
sb.Append(@" else { ");
sb.Append( "document.forms[0].submit(); }");
sb.Append(@"</script>");
content = sb.ToString();
}
protected override void Render(HtmlTextWriter output)
{
output.Write(this.content);
}
}
}
我从一个测试类中尝试如下:
//event triggered when clicking a button
protected void Button2_Click(object sender, EventArgs e)
{
msgBox1.confirm2("are you sure?");
MoreCode();
}
我原以为当我点击按钮时,会弹出确认弹出窗口,询问我是否要确认:
如果我单击"否":发生回发,因此MoreCode()不会执行
如果我点击"是":则不会执行javascript代码,因此执行将继续,并执行MoreCode()。
事实并非如此。当我用分步调试器点击按钮时,我可以看到:
它执行msgBox1.confirm2("你确定吗?");
然后执行MoreCode()
然后弹出窗口弹出
你能解释一下为什么按这个顺序执行吗?
提前谢谢。
MoreCode()在服务器端运行,而弹出窗口在客户端运行。它们是独立的行动。如果MoreCode必须在点击按钮后运行,那么您需要在JavaScript中有一个回调,并将其附加在之后
sb.Append(@" if(confirm( """ + sMsg + @""" ))");
回调将绑定到服务器调用,该服务器调用将执行MoreCode。
由于您没有使用任何AJAX,操作顺序很清楚:运行所有服务器端代码,然后HTML返回到浏览器,浏览器在浏览器中执行任何必要的客户端代码。以下是从点击Button2
开始按顺序发生的情况:
- 调用
Button2_Click
服务器事件。此事件执行要求它执行的所有操作:创建一个将被注入到结果HTML页面的字符串,然后运行MoreCode()
。控件尚未返回到浏览器--所有这些处理都在服务器端处理 - 生成的页面的HTML将与您注入的字符串一起呈现,其中包括您编写的JavaScript
- HTML被传送到浏览器并且HTML被执行。您的脚本会触发一个JavaScript提示,然后使用服务器端指定的文本向用户显示该提示
相关文章:
- javascript函数和代码隐藏函数的执行顺序
- Node.js:多个然后'It’执行顺序不正确
- 不同'单击'不同脚本中的回调:我可以控制执行顺序吗
- 代码混淆的执行顺序
- Javascript执行顺序错误
- Javascript执行顺序和回调
- 奇怪的javascript代码执行顺序
- for 循环/递归中的执行顺序
- JavaScript 中的执行顺序问题
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 控制承诺执行顺序
- 我可以信任 JavaScript 中声明中的执行顺序吗?
- 使用webcomponenetsjs的HTMLImports以意外的执行顺序加载导入-firefox
- 确保执行顺序:javascript
- Javascript代码的执行顺序
- 保证HTML表单提交和jQuery onclick的执行顺序
- 在ASP.Net中运行javascript时的执行顺序
- jQuery函数执行顺序
- Javascript中绑定到事件的函数的执行顺序
- 淘汰js可观察扩展的执行顺序是什么