Eri*_*ric 5 javascript icalendar internet-explorer
我正在尝试ics仅使用JavaScript即时创建文件,而不进行中间保存。我只能使用JavaScript,并且由于最终将在其上运行的平台而无法保存。
我是JavaScript的新手,但是通过在网络上进行了大量的搜索,我已经整理了一些(几乎)可行的方法。我提供的功能在Chrome,Firefox甚至Opera中都可以使用,但是在Internet Explorer中不起作用。在所有其他浏览器中,我都创建并下载了一个ics文件,但在资源管理器中,我获得"The webpage cannot be displayed"了显示在地址栏中的整个ics流,其开头为:
data:text/calendar;charset=utf8,BEGIN%3AVCALENDAR
Run Code Online (Sandbox Code Playgroud)
从“ BEGIN”开始的所有内容都应该是ics文件的一部分。
在所有其他浏览器中成功启动下载的代码是:
window.open("data:text/calendar;charset=utf8," + encodeURI(icsMSG));
Run Code Online (Sandbox Code Playgroud)
icsMSG是组成实际ics文件的字符串。
如前所述,唯一的问题是,这在IE中不起作用,因为IE似乎不知道该如何处理data:text/calendar...或也许我已经完全脱离基础,只是不知道自己在做什么。
如果需要,我可以提供所有代码。
谢谢!
我在react-add-to-calendar的github问题中找到了一个对我有用的答案:
var blob = new Blob([icsMSG], { type: 'text/calendar;charset=utf-8' });
window.navigator.msSaveOrOpenBlob(blob, 'download.ics');
Run Code Online (Sandbox Code Playgroud)
其中 icsMSG 是一个字符串,其中包含 ICS 文件中应包含的数据(所有内容都从“BEGIN”开始)。您还可以在该项目的另一个文件中使用 if 语句来测试浏览器是否是旧版本的 IE:
if (typeof window !== "undefined" &&
window.navigator.msSaveOrOpenBlob &&
window.Blob) { }
Run Code Online (Sandbox Code Playgroud)
这在 Internet Explorer 11 中适用于我,无需使用服务器下载文件。
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |