2008-12-09 60 views
1

在服務器端執行後關閉AJAX ASP.NET應用程序的瀏覽器窗口的最佳方法是什麼?關閉ASP.NET和AJAX應用程序的瀏覽器窗口

我發現這個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

你怎麼這個不斷去? – 2009-07-23 18:00:45

+0

@Gortok - 我想出了一個解決方案來設置OnClientClick事件的按鈕的JavaScript函數,當它從父頁面打開時關閉子窗口。 – 2009-07-23 21:02:36

回答

1

不,沒有用戶的同意,無法關閉瀏覽器窗口。您可以將它們從應用程序中註銷,但不能強行關閉瀏覽器窗口。

-2

這就是它。您可以使用ScriptManager.RegisterStartupScript(...)

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!";     
    } 
} 
0

爲了避免腳本警告,您可以使用此:

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

所以:

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