2010-01-18 122 views
5

當用戶點擊超鏈接時,我打開一個下載文件的彈出窗口。下載後,顯示打開/保存對話框。我想在下載完成後關閉彈出窗口(當提示用戶保存文件時)。 我試過window.close方法,但它不工作,因爲上下文不是彈出窗口,而是打開/保存對話框。下載文件後關閉瀏覽器彈出頁面

回答

5

我認爲你不能以編程方式控制它。這是瀏覽器特定的事情,其中​​一些瀏覽器允許您在複選框上打勾以關閉窗口等等。

+0

是的。一些用戶喜歡將該窗口粘在一邊,例如。所以他們可以在下載後運行'運行';他們更喜歡它,你不應該試圖干涉(不是你可以)。其他所有不喜歡這種行爲的人都會挑起盒子讓它消失。 – bobince 2010-01-18 14:57:55

1

瀏覽器有自己決定是否嘗試下載文件或在瀏覽器窗口內打開文件的習慣,具體取決於使用的瀏覽器,插件和服務器設置。這聽起來像你可能會在新窗口中打開鏈接,就好像瀏覽器打開文件而不是下載文件,然後瀏覽器選擇了下載。這使用戶無法控制下載的文件和空白窗口。

要強制下載,您應該能夠爲應用程序/強制下載鏈接的目標設置Content-Type標頭。你如何做到這一點將取決於你的設置,以及文件是否直接下載(在這種情況下,它將是一個服務器設置)或通過PHP或.Net(在這種情況下,很容易以編程方式設置標題)。還要確保超鏈接沒有在新窗口中打開鏈接的target="_blank"屬性。

+0

謝謝卡爾。問題不在於下載文件,而是在下載後關閉彈出窗口。 – Ankit 2010-01-18 10:51:04

+1

使用正確的Content-Type標題,並且沒有target =「_ blank」(或window.open),那麼彈出窗口甚至不應該首先打開。 – 2010-01-18 11:45:56

+0

我想打開彈出窗口並在該窗口中顯示自定義消息。但是一旦下載完成,我希望該窗口關閉。 – Ankit 2010-01-18 11:53:12

2

你可以做一兩件事:

步驟1中的 「在你的servlet或Struts操作使用的文件編寫代碼」 後

:所謂的 「response.flushBuffer();」 第2步:調用response.sendRedirect是( 「close.htm」)

其中close.htm是:

<html> 


<script> 


window.close(); 

</script> 

</html> 

唯一的問題是確定下載是否完成。我不認爲有這樣做的可能性。無論如何,是否有任何使用彈出窗口,直到下載完成。一旦下載啓動,您可以簡單地關閉彈出窗口。使用下面的JavaScript,不是嗎?

pop_up= window.open("", "PopUpName"); 
pop_up.document.write('POPUP TEXT');  
pop_up.close(); 
0

這是瀏覽器功能,您可以更改瀏覽器設置。你不應該去編程。默認情況下如果你將下載文件在Firefox中它要求保存,但在Crome這是不問。 您需要更改瀏覽器的設置。

相關問題