psy*_*tik 10 javascript ajax download
我想在用户点击链接时为用户启动文件下载,但我有一个onbeforeunload处理程序,我不希望在下载开始时调用它.要下载,我现在有一个<a>与href设置为文件的位置,但单击它在结果onbeforeunload中铬(不是FF,虽然)被调用.
我知道我可以设置一个私有标志并在onbeforeunload处理程序中检查,但有没有办法使用ajax启动下载?我仍然希望用户在下载文件时看到通常的对话框(打开/保存等).
想法?
tga*_*ard 11
实现这一目标的最佳方法是构建一个iframe并从那里触发下载.
我已经在Chrome,IE6 +和Firefox中对此进行了测试,这种方法似乎适用于所有这些方法.
示例代码:
function DownloadFile(filePath) {
    var downloadIframe = $('<iframe />', 
        {
            id    :    'downloadIframe'        
        }).appendTo('body');
    downloadIframe.attr('src', filePath);
}
这只适用于一次性下载(因为我们已经硬编码了一个id),如果你正在触发多次下载,那么我建议你通过将iframe存储在一个更广泛可访问的变量中来重用iframe.
将download属性添加到a标记,这似乎可以阻止onbeforeunload触发:
<a download href="mysite.com"></a>
从这个答案.
我猜想使用链接上的目标属性可以解决这个问题。
<a href="http://www.example.com/somefile.zip" target="_blank">download</a>
不会验证(除非使用框架集文档类型),但它可能会工作。它将创建一个新选项卡或窗口,然后弹出文件下载(如果http标头说应该),但它可能会使新选项卡/窗口保持打开状态,或者保存后可能会关闭它们...
另一方面,我认为拥有一个您有时不想触发的 onbeforeunload 处理程序听起来很可疑,为什么您仍然需要它?
| 归档时间: | 
 | 
| 查看次数: | 3945 次 | 
| 最近记录: |