2013-10-02 11 views
10

Ich versuche, eine .ics Datei zu erstellen, wenn ein Benutzer auf eine Schaltfläche klickt.Erstelle .ics Datei mit Javascript oder jquery

Bisher ist der Code, den ich habe, ist

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)); 
}); 

Das Herunterladen einer Datei .ics aber wenn ich versuche, das ich in iCal zu öffnen sagte mir, es die Datei nicht lesen kann.

+0

Welche Werte haben Startzeit, Endzeit und Standort? – AlliterativeAlice

+2

Am Ende habe ich http://addthisevent.com/ Ein sehr gutes und einfaches Plugin verwendet. – joshuahornby10

Antwort

3

Sie haben zwei Doppelpunkt für den Veranstalter Adresse: „Mailto :: [email protected]

Wenn dies das Problem nicht lösen, werden Sie uns den vollen ische Strom zeigen, wie sie empfangen wird von iCal.

Schließlich, und unter der Annahme, dass start_time und end_time das richtige Format verwenden, müssen Sie möglicherweise für das Standortfeld Zeilen umbrechen (http://tools.ietf.org/html/rfc5545#section-3.1) und bestimmte Zeichen (http://tools.ietf.org/html/rfc5545#section-3.3.11) umgehen. Mit anderen Worten, Sie können sich iCalendar-Bibliotheken ansehen.

6

Es ist ein Open-Source-Projekt für diese:

Es ist 100% JavaScript und arbeitete auf allen modernen Browsern mit Ausnahme von IE 9 und unten.

Wenn Sie interessiert sind, wie sie die Dateien funktionieren, können Sie ihre Quelle überprüfen. Sie verwenden die folgenden Bibliotheken, die schweres Heben auszuführen:

+3

Da keine Lizenz definiert ist, ist es standardmäßig alle Rechte vorbehalten. Eröffnet ein Problem dafür. –

+2

@InsanelyADHD diese ics.js unterstützt auch nicht 6> Safari-Version. –

+4

Die Originalausgabe ist nicht gut gepflegt und enthält kritische Fehler. Die Gabel ist stark in diesem. Benutze die Gabel. https://github.com/connorbodeus/ics.js – starlocke

6

Ich benutzte die ics.js Lösung von InsanelyADHD erwähnt.

Ein Problem mit der Lösung war, dass Chrome den Dateityp nicht richtig erkannt und versucht hat, die Datei als Text mit dem Editor zu öffnen.

ich die Download-Funktion verändert den Text öffnen Sie einfach mit:

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

Meine Gabel auf Github ist icsFormatter.js

In Bezug auf die Lizenz: Ich habe den ursprünglichen Autor kontaktiert, um eine GPL schließen - danach Ich werde auch eins hinzufügen.

+1

sollten Sie wahrscheinlich angeben, welcher Kalender ist. Meine Vermutung ist, es ist das Ergebnis von isc(). Download ('name')? –

+0

Sie sollten das Beispielenddatum korrigieren. – atilkan

0

Ich verwendete icsFormatter, die erwähnt wurde und von smartbart24. Aber ich musste den IE bis Version 7 unterstützen, also musste ich die Dinge ein wenig verbessern.

Um icsGen, mein Fork von icsFormatter zu verwenden, müssen Sie PHP 4 oder 5 auf Ihrem Webserver installiert haben.

Verwandte Themen