使用 javascript 或 jquery 创建.ics文件

Create .ics file with javascript or jquery

本文关键字:ics 文件 创建 jquery javascript 使用      更新时间:2023-09-26

当用户单击按钮时,我正在尝试创建一个.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));
});

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

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

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

我更改了下载功能以简单地打开文本:

window.open( "data:text/calendar;charset=utf8," + escape(calendar));

我在Github上的分支是icsFormatter.js

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

有一个开源项目:

  • 集成电路.js

它是100%的JavaScript,适用于所有现代浏览器,除了IE 9及更低版本。

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

  • 文件保护程序.js
  • 斑点.js
组织

者地址有两个冒号:"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库。

ics.js对我不起作用,因为我从数据库中异步加载数据。然后我切换到 ical.js结合 ics 的 saveAs 函数.js它起作用了。如果这里有人遇到同样的问题,请随时给我发短信,然后我将提供一个示例

我使用了提到的 icsFormatter 和 smartbart24。但是我需要支持IE到版本7,所以我不得不稍微调整一下。

要使用 icsGen,我的 icsFormatter 分支,您必须在 Web 服务器上安装 php 4 或 5。