2013-10-02 86 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。

相關問題