我想创建一个带有日历条目下载功能的静态html网站,它应该可以在新的浏览器上运行(不需要IE)。
[首先,我尝试了这个js库,以创建一个.ics
文件:https://github.com/nwcell/ics.js-我无法使其正常工作...然后,我尝试了一个调整后的叉子,我确实使用以下命令创建和下载了一个文件: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下载功能中定义的:
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相似...
你们DTSTART和DTEND都以小写字母z作为后缀而不是大写字母Z
DTSTART:20200229T190000z
DTEND:20200229T230000z
请参见https://tools.ietf.org/html/rfc5545#section-3.3.5
带有UTC时间或绝对时间的日期由拉丁文标识大写字母Z后缀字符(UTC代号)附加到时间值。