使用javascript或jquery创建.ics文件

jos*_*y10 15 javascript jquery icalendar

我试图.ics在用户单击按钮时创建一个文件.

到目前为止,我的代码是

msgData1 = $('.start-time').text();
msgData2 = $('.end-time').text();
msgData3 = $('.Location').text();

var icsMSG = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Our Company//NONSGML v1.0//EN\nBEGIN:VEVENT\nUID:me@google.com\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:me@gmail.com\nORGANIZER;CN=Me:MAILTO::me@gmail.com\nDTSTART:" + msgData1 +"\nDTEND:" + msgData2 +"\nLOCATION:" + msgData3 + "\nSUMMARY:Our Meeting Office\nEND:VEVENT\nEND:VCALENDAR";

$('.button').click(function(){
    window.open( "data:text/calendar;charset=utf8," + escape(icsMSG));
});
Run Code Online (Sandbox Code Playgroud)

这会下载一个.ics文件但是当我尝试在iCal中打开它时,我被告知它无法读取文件.

sma*_*t24 14

我使用了InsanelyADHD提到的ics.js解决方案.

解决方案的一个问题是Chrome没有正确检测文件类型,并尝试使用编辑器将文件作为文本打开.

我更改了下载功能,只需使用以下命令打开文本:

window.open( "data:text/calendar;charset=utf8," + escape(calendar));
Run Code Online (Sandbox Code Playgroud)

我在Github上的分支icsFormatter.js

关于许可证:我已经联系了原作者以包含GPL - 之后我也将包含一个GPL.


Ins*_*DHD 7

有一个开源项目:

它是100%的JavaScript并且适用于除IE 9及更低版本之外的所有现代浏览器.

如果您对如何使文件生效感兴趣,可以查看它们的来源.他们使用以下库来执行繁重的工作:

  • 原始版本维护得不好,并且包含严重缺陷.叉子在这一个很强大.使用叉子.https://github.com/connorbode/ics.js (4认同)
  • 由于没有许可证,因此默认保留所有权利.为此打开了一个问题. (3认同)
  • @InsanelyADHD这个ics.js也不支持6> safari版本. (2认同)
  • 我已经编辑了这个答案指向 https://github.com/nwcell/ics.js 这似乎是原始和现在维护的版本 (2认同)

Arn*_*aud 4

您有两个冒号作为组织者地址:“MAILTO::me@gmail.com”

如果这不能解决问题,您将必须向我们展示 iCal 收到的完整 ical 流。

最后,假设 start_time 和 end_time 使用正确的格式,对于位置字段,您可能需要换行(https://www.rfc-editor.org/rfc/rfc5545#section-3.1)并转义某些字符(https://www.rfc-editor.org/rfc/rfc5545#section-3.3.11)。换句话说,您可能想查看 iCalendar 库。