2013-10-02 17 views
10

Próbuję utworzyć plik .ics, gdy użytkownik kliknie przycisk.Utwórz plik .ics za pomocą javascript lub jquery

Dotychczas kod mam jest

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

ten pobiera plik .ics ale gdy próbuję otworzyć to w iCal Powiedziano mi, że nie można odczytać pliku.

+0

Jakie są wartości czasu rozpoczęcia, czasu zakończenia i lokalizacji, z których korzystasz? – AlliterativeAlice

+2

W końcu użyłem http://addthisevent.com/ Bardzo dobrej i prostej wtyczki. – joshuahornby10

Odpowiedz

3

masz dwa dwukropek na adres organizatora: „mailto :: [email protected]

Jeśli to nie rozwiąże problemu, trzeba będzie pokazać nam pełną iCal strumień, po jego otrzymaniu autor: iCal.

Na koniec, zakładając, że czas_początkowy i czas_końcowy mają poprawny format, w polu lokalizacji może być konieczne zawinięcie wierszy (http://tools.ietf.org/html/rfc5545#section-3.1) i uniknięcie pewnych znaków (http://tools.ietf.org/html/rfc5545#section-3.3.11). Innymi słowy, możesz zajrzeć do bibliotek iCalendar.

6

Jest to projekt open source do tego:

To 100% JavaScript i pracował na wszystkich nowoczesnych przeglądarkach z wyjątkiem IE 9 i poniżej.

Jeśli interesuje Cię sposób działania plików, możesz sprawdzić ich źródło. Wykorzystują one następujące biblioteki wykonać dźwiganie ciężarów:

+3

Ponieważ nie określono licencji, domyślne są wszystkie prawa zastrzeżone. Otwarty problem. –

+2

@InsanelyADHD to ics.js również nie obsługuje wersji 6> safari. –

+4

Oryginalne wydanie nie jest dobrze utrzymane i zawiera krytyczne błędy. Widelec jest mocny w tym. Użyj widelca. https://github.com/connorbode/ics.js – starlocke

6

użyłem rozwiązanie ics.js wspomniany przez InsanelyADHD.

Problem z rozwiązaniem polegał na tym, że Chrome nie wykrył poprawnie typu pliku i próbował otworzyć plik jako tekst w edytorze.

zmieniłem funkcję pobierania otworzyć tekst po prostu z:

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

Mój widelec na Github jest icsFormatter.js

Odnośnie licencji: I skontaktowaliśmy że autor zawierać GPL - po tym Uwzględnię też jeden.

+1

powinieneś prawdopodobnie określić, jaki kalendarz jest. Zgaduję, że jest to wynik isc(). Download ("name")? –

+0

Należy poprawić przykładową datę zakończenia. – atilkan

0

Użyłem icsFormatter, o którym wspomniano i przez smartbart24. Byłem jednak zobowiązany do wspierania IE do wersji 7, więc musiałem trochę poprawić.

Aby użyć icsGen, mojego widelca icsFormatter, musisz zainstalować PHP 4 lub 5 na swoim serwerze internetowym.

Powiązane problemy