Создать файл .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, мне говорят, что он не может прочитать файл.
Ответы
Ответ 1
Для этого есть проект с открытым исходным кодом:
Это 100% JavaScript и работал во всех современных браузерах, кроме IE 9 и ниже.
Если вам интересно, как они работают с файлами, вы можете проверить их источник. Для выполнения тяжелой работы они используют следующие библиотеки:
Ответ 2
Я использовал ics.js решение, упомянутое InsanelyADHD.
Одна из проблем с решением заключалась в том, что Chrome не обнаружил тип файла правильно и попытался открыть файл в виде текста с помощью редактора.
Я изменил функцию загрузки, чтобы открыть текст, просто:
window.open( "data:text/calendar;charset=utf8," + escape(calendar));
Мой вилок на Github icsFormatter.js
Что касается лицензии: я связался с автором, чтобы включить GPL - после этого я тоже включу его.
Ответ 3
У вас есть два двоеточия для адреса организатора: "MAILTO:: [email protected]"
Если это не решит проблему, вам нужно будет показать нам полный поток, так как он получен 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.
Ответ 4
Я использовал icsFormatter, о котором упоминалось, и smartbart24. Но я должен был поддерживать IE до версии 7, поэтому мне пришлось немного подстроить элементы.
Чтобы использовать icsGen, моя вилка icsFormatter, у вас должен быть установлен php 4 или 5 на вашем веб-сервере.