确定文件的方法是在iframe中加载的

时间:2016-12-27 15:50:41

标签: javascript iframe download dom-events jquery-events

我遇到了问题:我想抓住“保存文件”对话框关闭或加载服务器上生成的csv文件(隐藏微调器以进行加载)的时刻。我知道Javascript中没有这样的事件。我绝对不想在后端为这样的小问题添加cookie,所以我想实现另一种解决方法。我看到的唯一方法是iframe,但据我所知,onload等事件监听器至少在Chrome中的附件标题中不起作用。我还试图对iframe状态实施一种计时器检查,但是在发送文件请求后它才能正常工作。文件在几秒钟内(10-20)在服务器上生成,因此该解决方案不符合我的目标。

我在前端使用Angular,所以任何解决方案兼容(vanilla JS,jQuery,Angular本身)对我都有很大的帮助。希望得到任何。谢谢你们,伙计们!

1 个答案:

答案 0 :(得分:1)

此处没有DOM事件,在Save file UI对话框打开或关闭时会触发该事件。

您可以尝试利用focus事件来关闭Save file对话框关闭,window.click()元素<a>上调用download后重新获得焦点1}}属性集,虽然方法不完全可靠。

// append or display spinner element here
var csvUrl = document.createElement("a"); 
csvUrl.href = url; 
csvUrl.download = "csv_filename"; 
csvUrl.click();
window.onfocus = function () { 
  document.body.removeChild(csvUrl); 
  // remove or hide spinner element here 
  window.onfocus = null; 
}