2008-09-18 68 views
1

我有一個專門在IE7(內部網站)上運行的asp.net應用程序。如何禁用瀏覽器回發警告對話框

當用戶需要輸入數據時,我彈出一個帶窗體的子窗口。當表單關閉時,它會調用javascript:window.opener.location.reload(true),以便新數據顯示在主頁面上。

問題是,瀏覽器抱怨它必須重新發布頁面。有什麼辦法可以關閉此功能嗎?

回答

0

這是因爲在window.opener頁來自POST請求 也許你可以使用JavaScript的 :window.opener.location = window.opener 。位置;如果可以在沒有POST的情況下獲取數據,那麼只需要GET請求。

1

這是ASP.NET的常見「回發」方式的問題。如果您需要重新加載沒有此警告的頁面,則此頁面必須來自GET,而不是POST。你可以自己做一個Response.Redirect(「...」)。但是這會破壞視圖狀態的使用。

1

asp.net mvc修復了這個問題,不是ie7唯一的問題,而是大多數瀏覽器的安全功能。沒有我知道的修復,除非你可以用js更新主表單中的內容而不是重新加載整個頁面

0

我不相信有辦法做到這一點。相反,爲什麼不直接父窗口沒有重新加載頁面。

的javascript:window.opener.location = '你的URL'

4

不,但有一個解決方案。它被普遍認爲是在用戶將數據發佈到頁面後立即使用302重定向的好設計。這可以防止彈出窗口發生。請允許我詳細說明。

1)用戶填寫表單並通過POST提交數據。

2)後端接收數據並對其執行操作。

3),而不是返回的內容給用戶的,後端發出302只要改它做處理頁面(可能將用戶重定向回完全相同的網址,如果需要的話)

4 )用戶將看到的頁面是您告訴瀏覽器重定向到的頁面。他們將使用標準的GET請求加載重定向的頁面。如果他們嘗試刷新頁面,則不會重新發布數據。問題解決了。

0

AFAIK,不通過您的腳本。

您可以試試:

window.opener.location = '#'; 

應該繞過瀏覽器重新發布。而且,您可以根據需要調整散列名稱。

0

如果您從第1頁移動到第2頁,並且想要禁用瀏覽器返回第1頁,請在第1頁的頂部添加以下內容。

<script> 
if(window.history.forward(1) != null) 
       window.history.forward(1); 
</script>