Feche a janela do navegador de uma aplicação ASP.NET e AJAX

votos
1

Qual é a melhor maneira de fechar uma janela do navegador de um aplicativo AJAX ASP.NET após a do lado do servidor foi executado.

Eu encontrei esta solução , mas parece um pouco complexo para o que eu quero realizar. Ou esta é a melhor maneira de realizar minha tarefa.

UPDATE: Eu tenho que fechar a janela depois que o botão é pressionado

UPDATE 1: Eu tentei a solução da outra questão SO, e não funcionou para mim.

<asp:Button ID=btnMyButton runat=server onClick=btnMyButton_Click />

protected void btnMyButton_Click(object sender, EventArgs e)
{
}

Eu usei o seguinte código na minha página, mas o A página que você está vendo está tentando fechar as janelas janela módulo se solte.

if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
            ScriptManager.RegisterStartupScript(upApproveRequest, typeof(string), closeWindow, window.close();, true);

Qualquer maneira de evitar isso?

Publicado 10/12/2008 em 00:49
fonte usuário
Em outras línguas...                            


4 respostas

votos
-2

Isso é muito bonito isso. Você pode apenas usarScriptManager.RegisterStartupScript(...)

Respondeu 10/12/2008 em 00:53
fonte usuário

votos
1

Não, não há nenhuma maneira de fechar uma janela do navegador sem o consentimento do usuário. Você pode logar-los fora de sua aplicação, mas você não pode forçar a fechar a janela do browser.

Respondeu 10/12/2008 em 03:23
fonte usuário

votos
1

Na verdade, você pode fazer isso colocando o seguinte código no seu evento clique de botão.

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!";                
    }
}
Respondeu 10/09/2010 em 15:36
fonte usuário

votos
0

Para evitar o aviso de script, você pode usar isto:

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

Assim:

if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
        ScriptManager.RegisterStartupScript(upApproveRequest, typeof(string), "closeWindow", "window.open('', '_self', '');window.close();", true);
Respondeu 14/02/2012 em 20:43
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more