在服务器端执行后关闭AJAX ASP.NET应用程序的浏览器窗口的最佳方法是什么。
我发现了这个solution,但对于我想要完成的事情来说似乎有点复杂。或者这是完成任务的最佳方式。
更新:按下按钮后我必须关闭窗口
更新1:我尝试了其他SO问题的解决方案,但它对我不起作用。
<asp:Button ID="btnMyButton" runat="server" onClick="btnMyButton_Click" />
protected void btnMyButton_Click(object sender, EventArgs e)
{
}
我在页面中使用了以下代码,但是“正在查看的网页正在尝试关闭窗口”模块窗口会弹出。
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
ScriptManager.RegisterStartupScript(upApproveRequest, typeof(string), "closeWindow", "window.close();", true);
有什么方法可以阻止这种情况吗?
答案 0 :(得分:1)
不,未经用户同意,无法关闭浏览器窗口。您可以将它们从应用程序中注销,但不能强行关闭浏览器窗口。
答案 1 :(得分:1)
实际上,您可以通过在按钮点击事件中放置以下代码来实现此目的。
protected void btnMyButton_Click(object sender, ImageClickEventArgs e)
{
// Update database
bool success = Presenter.DoDatabaseStuff();
if (success)
{
// Close window after success
const string javaScript = "<script language=javascript>window.top.close();</script>";
if (!ClientScript.IsStartupScriptRegistered("CloseMyWindow"))
{
ClientScript.RegisterStartupScript(GetType(),"CloseMyWindow", javaScript);
}
}
else
{
// Display failure result
result_msg_area.Visible = true;
lblError.Text = "An error occurred!";
}
}
答案 2 :(得分:0)
要避免脚本警告,您可以使用:
window.open('', '_self', '');window.close();
所以:
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
ScriptManager.RegisterStartupScript(upApproveRequest, typeof(string), "closeWindow", "window.open('', '_self', '');window.close();", true);
答案 3 :(得分:-2)
这就是它。您可以使用ScriptManager.RegisterStartupScript(...)