我遇到了问题:我想抓住“保存文件”对话框关闭或加载服务器上生成的csv文件(隐藏微调器以进行加载)的时刻。我知道Javascript中没有这样的事件。我绝对不想在后端为这样的小问题添加cookie,所以我想实现另一种解决方法。我看到的唯一方法是iframe,但据我所知,onload
等事件监听器至少在Chrome中的附件标题中不起作用。我还试图对iframe状态实施一种计时器检查,但是在发送文件请求后它才能正常工作。文件在几秒钟内(10-20)在服务器上生成,因此该解决方案不符合我的目标。
我在前端使用Angular,所以任何解决方案兼容(vanilla JS,jQuery,Angular本身)对我都有很大的帮助。希望得到任何。谢谢你们,伙计们!
答案 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;
}