2017-09-13 66 views
0

我有我生成和下載文件的控制器。 當用戶點擊「下載」按鈕,該代碼被執行:下載未開始後windows.open()

_statusWindow = window.open('downloadCSV', "_statusWindow"); 
 
_statusWindow.document.write('<div> Please wait while we processing your request</div>'); 
 
_statusWindow.document.title = "Downloading...";

它指向控制器downloadCSV,生成文件(不返回任何意見) 所以新窗口打開時,文件生成 - 下載自動開始,窗口將在下載完成後關閉。 此代碼工作正常,當我沒有這樣一行:

_statusWindow.document.write('<div> Please wait while we processing your request</div>'); 

但我想追加這條線,以顯示該消息的用戶。 使用此行(正如我在第一個代碼段中展示的那樣),它僅在單擊按鈕TWICE時開始下載!我不知道爲什麼。當我點擊一次 - 它只是顯示信息,而無需呼叫控制器和生成的文件,當我稱它爲第二次 - 它開始下載...

任何建議,請大家幫忙

回答

1

你可以試試看,我試圖打開下載的iframe和關閉窗口加載的iframe ..希望它可以工作..

var win = window.open("","_statusWindow"); 
var html = '<html><head><title>Base</title></head><body>Please wait while 
    we processing your request...</body></html>'; 
var iframe = win.document.createElement('iframe'); 
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html); 
win.document.body.appendChild(iframe); 
var iframe2 = win.document.createElement('iframe'); 
iframe2.src = "downloadCSV"; 
iframe2.onload= win.close(); 
win.document.body.appendChild(iframe2); 
1

我懷疑消息是否停留在窗口或直到下載完成,可以請您給下面的代碼的嘗試..

var win = window.open("","_statusWindow"); 
var html = '<html><head></head><body>Please wait while we processing your 
request...</body></html>'; 
var iframe = win.document.createElement('iframe'); 
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html); 
iframe.onload = window.open("downloadCSV","_statusWindow"); 
win.document.body.appendChild(iframe); 
+0

它的工作原理!非常感謝你 但是我想關閉這個窗口,下載完成後。我試過: $(win.document).ready(win.close()); 但它立即關閉窗口。我認爲這會起作用,因爲當我下載smth時,我在瀏覽器選項卡的左上角有微調,所以文檔還沒有準備好。 但它不起作用。下載完成後,您有任何建議如何關閉該選項卡嗎?在我的例子中,下載完成後窗口自動關閉 – Bilberryfm