以编程方式从后面的代码closuresaspx页面
closures代码隐藏ASPX页面的最佳方法是什么?
我有一个button事件处理程序,我想在用户点击页面上的ASP.NETbutton后closures页面。 我试图以编程方式添加一个JavaScript方法,其中包含一个window.close()
命令OnClientClick
事件closures该页面,但它不起作用。 该button也是一个AJAX更新面板的asp:AsyncPostBoskTrigger
。
该应用程序使用.NET Framework 3.5。
你通常会做这样的事情:
protected void btnClose_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.close();", true); }
但是请记住,在不同的场景中会发生不同的事情。 Firefox不会让你closures一个你没打开的窗口(用window.open()
打开)。
IE7会提示用户“这个页面正在尝试closures(Yes | No)”对话框。
无论如何,你应该准备好处理这个并不总是closures的窗口!
上述两个问题的一个解决方法是使用:
protected void btnClose_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.open('close.html', '_self', null);", true); }
并创build一个close.html:
<html><head> <title></title> <script language="javascript" type="text/javascript"> var redirectTimerId = 0; function closeWindow() { window.opener = top; redirectTimerId = window.setTimeout('redirect()', 2000); window.close(); } function stopRedirect() { window.clearTimeout(redirectTimerId); } function redirect() { window.location = 'default.aspx'; } </script> </head> <body onload="closeWindow()" onunload="stopRedirect()" style=""> <center><h1>Please Wait...</h1></center> </body></html>
请注意,如果由于某种原因2秒后窗口不closures,close.html将redirect到default.aspx。
protected void btnOK_Click(object sender, EventArgs e) { // Your code goes here. if(isSuccess) { string close = @"<script type='text/javascript'> window.returnValue = true; window.close(); </script>"; base.Response.Write(close); } }
更新:我已经采取了所有的input,并提出了以下解决scheme:
在后面的代码中:
protected void Page_Load(object sender, EventArgs e) { Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "closePage", "window.onunload = CloseWindow();"); }
在aspx页面:
function CloseWindow() { window.close(); }
回发是重新加载页面的过程,所以如果你想在回发后closures页面,那么你需要设置你的window.close()javascript在浏览器的onload事件中运行,通常使用ClientScript.RegisterStartupScript()
函数。
但是你确定这是你想要做的吗? closures页面往往会激怒用户。
你只需要在你的asp:Button元素中添加这个属性(例如):
OnClientClick="javascript:window.close();"
它完美的作品。
您应该注入一个启动脚本,在回发完成后closures页面。
ClientScript.RegisterStartupScript(typeof(Page), "closePage", "<script type='text/JavaScript'>window.close();</script>");
您可以通过简单地将窗口closures代码粘贴到标记中button的OnClientClick事件中来closures窗口
如果您使用RadAjaxManager那么这里是帮助的代码:
RadAjaxManager1.ResponseScripts.Add("window.opener.location.href = '../CaseManagement/LCCase.aspx?" + caseId + "'; window.close();");
closures一个asp.net的Windows应用程序,
- 只需将一个button拖入devise页面
-
然后在下面的代码中写下它的click事件
" this.close(); "
即:
private void button2_Click(object sender, EventArgs e) { this.Close(); }
protected void Button1_Click(object sender, EventArgs e) { Button1.Attributes.Add("onclick"," CloseWindow();"); } <script type="text/javascript"> function CloseWindow() { window.close(); } </script>