2015-07-10 46 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; 
}; 

这样做的事情已经解决了我的问题,但仍然感觉不太理想。

相关问题