数据:Internet Explorer无法识别的文本/日历

时间:2014-04-25 06:52:43

标签: javascript internet-explorer icalendar

我尝试在没有中间保存的情况下使用JavaScript动态创建ics文件。我限制使用JavaScript并且没有保存,因为最终会运行该平台。

我是一名新手JavaScript程序员,但我已经拼凑了一些可以(通常)在网络上进行大量搜索的工作。我在Chrome,Firefox甚至Opera中的作品都有用,但它在Internet Explorer中不起作用。在所有其他浏览器中,我获得了创建和下载的ics文件,但在资源管理器中,我得到"The webpage cannot be displayed",其中整个ics流显示在地址栏中,从以下开始:

data:text/calendar;charset=utf8,BEGIN%3AVCALENDAR

来自" BEGIN" on是应该成为ics文件一部分的一部分。

在所有其他浏览器中成功启动下载的代码是:

 window.open("data:text/calendar;charset=utf8," + encodeURI(icsMSG));

icsMSG是组成实际ics文件的字符串。

如上所述,唯一的问题是,这并不适用于IE,因为IE似乎不知道如何处理" data:text/calendar" ......或者我可能完全不在基地,只是不知道自己在做什么。

如有必要,我可以提供所有代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

我在github issues for react-add-to-calendar中找到了一个对我有用的答案:

var blob = new Blob([icsMSG], { type: 'text/calendar;charset=utf-8' });
window.navigator.msSaveOrOpenBlob(blob, 'download.ics');

icsMSG是一个字符串,其中包含应该在ICS文件中的数据(所有从“ BEGIN”开始的内容)。您还可以在another file from this project中使用if语句来测试浏览器是否是IE的旧版本:

if (typeof window !== "undefined" &&
    window.navigator.msSaveOrOpenBlob &&
    window.Blob) { }

这在Internet Explorer 11中对我有用,而无需使用服务器下载文件。