我正在使用javascript创建自定义.ics文件。当我尝试在我的桌面上打开它时,它运行良好,但是当我在我的Iphone上使用safari打开它时,它有一个奇怪的行为,它打开一个新的屏幕将事件添加到日历,但它立即关闭。 观看视频:https://vimeo.com/267547030
这是代码:
HTML:
<a id="test">Demo</a>
JS:
var icsMSG = "BEGIN:VCALENDAR\n" +
"VERSION:2.0\n" +
"PRODID:-//www.marudot.com//iCal Event Maker\n" +
"CALSCALE:GREGORIAN\n" +
"BEGIN:VTIMEZONE\n" +
"TZID:Asia/Damascus\n" +
"TZURL:http://tzurl.org/zoneinfo-outlook/Asia/Damascus\n" +
"X-LIC-LOCATION:Asia/Damascus\n" +
"BEGIN:STANDARD\n" +
"TZOFFSETFROM:+0300\n" +
"TZOFFSETTO:+0200\n" +
"TZNAME:EET\n" +
"DTSTART:19701030T000000\n" +
"RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\n" +
"END:STANDARD\n" +
"BEGIN:DAYLIGHT\n" +
"TZOFFSETFROM:+0200\n" +
"TZOFFSETTO:+0300\n" +
"TZNAME:EEST\n" +
"DTSTART:19700327T000000\n" +
"RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\n" +
"END:DAYLIGHT\n" +
"END:VTIMEZONE\n" +
"BEGIN:VEVENT\n" +
"DTSTAMP:20180502T071600Z\n" +
"UID:20180502T071600Z-1723765681@marudot.com\n" +
"DTSTART;TZID=\"Asia/Damascus\":20180509T120000\n" +
"DTEND;TZID=\"Asia/Damascus\":20180510T120000\n" +
"SUMMARY:scaxczads\n" +
"END:VEVENT";
$('#test').click(function () {
window.open( "data:text/calendar;charset=utf8," + escape(icsMSG));
});
答案 0 :(得分:0)
我正在使用图书馆:Datebook 1:https://www.npmjs.com/package/datebookfor根据自定义数据生成 .ics 文件。还支持Google日历,Yahoo日历,Outlook日历。
escape()已被弃用,您应该改用 encodeURI()。
iCal场景:
对于大型设备浏览器,我下载了正在使用的 .ics 文件:
const icalendar = new ICalendar(this.config);
icalendar.download();
这将下载.ics文件,当您打开它时,可以将其添加到默认日历中。
我正在使用的移动设备浏览器
const icalendar = new ICalendar(this.config);
window.open('data:text/calendar;charset=utf8,' + encodeURI(icalendar.render()));