2013-10-02 164 views
10

我试图在用户单击按钮时创建.ics文件。使用javascript或jquery创建.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:[email protected]\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:[email protected]\nORGANIZER;CN=Me:MAILTO::[email protected]\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中打开此我告诉它无法读取该文件。

+0

什么是您使用的开始时间,结束时间和位置的值? – AlliterativeAlice

+2

最后我使用了http://addthisevent.com/一个非常好用和简单的插件。 – joshuahornby10

回答

3

你有两个冒号的组织者地址:“电子邮件地址:: [email protected]

如果不解决这个问题,你必须向我们展示了完整的iCal流,因为它是收到由iCal。

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

6

有这个一个开源项目:

这是100%的JavaScript和所有现代浏览器的工作,除了IE 9及以下。

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

+3

由于没有许可证定义其默认版权所有。为此打开了一个问题。 –

+2

@InsanelyADHD这个ics.js也不支持6> safari版本。 –

+4

原始版本维护得不好,包含严重缺陷。这个叉子很坚固。使用叉子。 https://github.com/connorbode/ics.js – starlocke

6

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

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

我改变了下载功能打开文本只需用:

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

我在Github上叉icsFormatter.js

关于许可:我所接触的原作者包括GPL - 后我也会包括一个。

+1

您应该指定日历。我的猜测是,这是isc()。download('name')的结果? –

+0

您可以更正示例结束日期。 – atilkan

0

我使用了icsFormatter这是提到和smartbart24。但我被要求支持IE到7版,所以我不得不稍微调整一些东西。

要使用icsGen,我的叉子icsFormatter,你必须在您的网络服务器上安装php 4或5。

相关问题