【发布时间】:2020-01-25 08:50:17
【问题描述】:
我想创建一个带有日历条目下载功能的静态html网站,它应该可以在新的浏览器上运行(不需要IE)。
首先我尝试了这个 js 库来创建一个 .ics 文件:https://github.com/nwcell/ics.js - 我无法让它工作......
然后我尝试了一个调整后的 fork,我确实可以创建并下载一个文件:https://github.com/matthiasanderer/icsFormatter
我正在 Windows 10 上对其进行测试,它在 MS Outlook 中成功打开,但后来我注意到该文件没有在 Windows 日历应用程序中打开:
错误转换为:"The event couldn't be opened. Perhaps the calendar file is damaged."
在 iPhone 上的 Safari 中,点击下载按钮时也会出现错误:
错误转换为:"Safari can not load this file."
我用这个工具验证了生成的.ics文件:http://ical-validator.herokuapp.com/validate/,调整了JS代码以消除几乎所有的错误——我不知道这是不是最后一个错误,我不知道如何摆脱的,是必不可少的:
Specifying the charset in the MIME Content-Type is mandatory
我认为MIME 类型应该不是问题,因为它是在这一行的 JS-download 函数中定义的:
window.open("data:text/calendar;charset=utf-8," + escape(calendar));
我也想知道为什么在Chrome 中下载工作正常,但Firefox (V.72) 下载的文件以两个结尾的文件结尾:.ics.ics
我希望我能给文件起一个名字——但我发现这样做的唯一方法是在this answer 底部的 .csv 文件,但它不起作用——我认为encodeURI函数破坏了我的换行符之类的。
这是我生成的 .ics 文件的内容:
BEGIN:VCALENDAR
PRODID:-//test//cal_events/NONSGML v1.0//DE
VERSION:2.0
BEGIN:VEVENT
UID:b1e4da94-1550-453f-bdee-a085a0b14231
CLASS:PUBLIC
DESCRIPTION:This is the description...
DTSTAMP:20200125T084646Z
DTSTART:20200229T190000z
DTEND:20200229T230000z
LOCATION:Deutschland
SUMMARY:Event Title
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
看起来this question 很相似...
【问题讨论】:
-
可能与问题无关,但应该是
.ics,而不是.isc。 -
@Barmar thx - 我总是把它弄混,我更正了它 - 不幸的是它没有相关性:D
标签: javascript icalendar