需要有关在Javascript应用程序中处理简单文件下载(.ics)的选项的建议。
假设s.icsMsg是格式正确的文本/日历字符串,以下内容适用于Chrome:
var downloadLink = document.createElement("a");
downloadLink.href = 'data:text/calendar;charset=utf-8,' + s.icsMsg;
downloadLink.download = "Calendar.ics";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
下载文件,正确命名并打开邮件客户端。在IE 9+中,我得到数据区域大小错误。
有没有办法在IE中实现这一点,纯粹是在客户端?我知道我可以通过在http标头中设置内容配置来实现,但由于文件是在客户端生成的,因此需要两个额外的跃点来推送它,保存它,然后用正确的标头发送回来(如果这甚至可以工作)。
任何建议都会很棒......
答案 0 :(得分:0)
找到解决方案。在IE10 / 11中工作正常,任何事先我只是没有显示触发此功能的链接。认为大多数用户将在移动设备上,因此旧的IE将不会成为问题。
对于非IE浏览器会使用window.open(),但无法找到如何设置文件名。虽然没有分阶段,但一切正常。
if (!s.isIE) {
var downloadLink = document.createElement("a");
downloadLink.href = 'data:text/calendar;charset=utf-8,\r\n' + escape(s.icsMsg);
downloadLink.download = "Calendar.ics";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
else {
var blob = new Blob([s.icsMsg]);
window.navigator.msSaveOrOpenBlob(blob, 'Calendar.ics');
}