Закройте окно браузера приложения ASP.NET и AJAX - PullRequest
1 голос
/ 10 декабря 2008

Как лучше всего закрыть окно браузера приложения AJAX ASP.NET после выполнения на стороне сервера.

Я нашел это решение , но оно кажется немного сложным для того, чего я хочу достичь. Или это лучший способ выполнить мою задачу.

ОБНОВЛЕНИЕ: Я должен закрыть окно после нажатия кнопки

ОБНОВЛЕНИЕ 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);

Есть ли способ предотвратить это?

Ответы [ 4 ]

1 голос
/ 10 декабря 2008

Нет, нет способа закрыть окно браузера без согласия пользователя. Вы можете выйти из приложения, но не можете принудительно закрыть окно браузера.

1 голос
/ 10 сентября 2010

На самом деле вы можете сделать это, поместив следующий код в событие нажатия кнопки.

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!";                
    }
}
0 голосов
/ 14 февраля 2012

Чтобы избежать предупреждения скрипта, вы можете использовать это:

window.open('', '_self', '');window.close();

Итак:

if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
        ScriptManager.RegisterStartupScript(upApproveRequest, typeof(string), "closeWindow", "window.open('', '_self', '');window.close();", true);
0 голосов
/ 10 декабря 2008

Вот и все. Вы можете просто использовать ScriptManager.RegisterStartupScript(...)

...