如何从静态网站生成工作 .ics 文件?
How to generate working .ics file from static website?
我想创建一个带有日历条目下载功能的静态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-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很相似...
你的 DTSTART 和 DTEND 都有一个小写的 z 作为后缀而不是大写的 Z
DTSTART:20200229T190000z
DTEND:20200229T230000z
见https://www.rfc-editor.org/rfc/rfc5545#section-3.3.5
The date with UTC time, or absolute time, is identified by a LATIN
CAPITAL LETTER Z suffix character, the UTC designator, appended to
the time value.
我想创建一个带有日历条目下载功能的静态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-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很相似...
你的 DTSTART 和 DTEND 都有一个小写的 z 作为后缀而不是大写的 Z
DTSTART:20200229T190000z
DTEND:20200229T230000z
见https://www.rfc-editor.org/rfc/rfc5545#section-3.3.5
The date with UTC time, or absolute time, is identified by a LATIN CAPITAL LETTER Z suffix character, the UTC designator, appended to the time value.