2015-07-10 73 views
4

我的應用程序信息頁面上有一個下載按鈕,用於下載pdf。我還爲所有頁面設置了window.onbeforeunload事件來啓動我的加載屏幕微調器,並且window.onunload事件殺死加載屏幕。我遇到的問題是,當我下載我的PDF文件時,下載工作正常,但window.onbeforeunload事件被觸發,而不是window.onunload(因爲我不離開頁面)。這會導致我的加載頁面在我下載我的文件時開始,並且從不停止,從而使頁面似乎掛在下載上。當使用ajax調用下載文件時,避免觸發window.onbeforeunload

我用下面的htm和JavaScript的下載我SystemInfo.pdf文件:

<a href="#" onclick="SystemInfo()">Download System Info</a> 

function SystemInfo(){ 
    var url = 'xxxxx/about/SystemInfo?isajax=true'; 
    window.location = formatURL(url); 
} 

我試圖改變使用「下載」屬性的鏈接,但不是與Safari和兼容IE和Chrome和Firefox都是必需的。我還添加了一個動態iframe來引發更改,但被告知這是不可取的。請讓我知道你是否可以幫忙。

回答

1

我設法找到解決這個,感覺光滑,不太哈克如添加一個iframe中下載的方式。

我創建了一個JS變量(oldUnloadValue)我的系統的系統信息()函數之外,我在window.onbeforeunload中分配原始函數。然後,我將window.onbeforeunload設置爲一個單獨的函數,我創建了這個函數,它將window.onbeforeunoad設置回它的原始狀態。這使得window.onbeforeunload在文件下載過程中不會產生任何不良影響,但在下載完成後將功能重置。

var oldUnloadValue; 

function SystemInfo() { 
    oldUnloadValue = window.onbeforeunload; 
    window.onbeforeunload = ResetOnBeforeUnload; 
    var url = 'xxxxx/about/SystemInfo?isajax=true'; 
    window.location = formatURL(url); 
}; 

function ResetOnBeforeUnload() { 
    window.onbeforeunload = oldUnloadValue; 
}; 

這樣做的事情已經解決了我的問題,但仍然感覺不太理想。

相關問題