Создать файл .ics на лету с помощью javascript или jquery?
Может ли кто-нибудь сказать мне, есть ли какой-либо плагин jquery для динамического создания файла .ics со значениями, исходящими из значений div страницы, как это было бы
<div class="start-time">9:30am</div>
<div class="end-time">10:30am</div>
<div class="Location">California</div>
или javascript способ динамического создания файла .ics? Мне в основном нужно создать файл .ics и вытащить эти значения с помощью javascript или jquery? и ссылку, которая создала файл ics для ссылки "ДОБАВИТЬ В КАЛЕНДАРЬ", чтобы она добавилась в Outlook?
Ответы
Ответ 1
вам нужно будет сделать это в формате ICS. также вам нужно будет преобразовать дату и часовой пояс; НАПРИМЕР. 20120315T170000Z или yyyymmddThhmmssZ
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";
$('.test').click(function(){
window.open( "data:text/calendar;charset=utf8," + escape(icsMSG));
});
приведенный выше образец создаст файл для загрузки. пользователь должен будет открыть его, а остальная часть, iCal или календарь Google сделают все остальное.
Ответ 2
Это старый вопрос, но у меня есть некоторые идеи, которые могут помочь вам начать (или кому-либо еще, кто должен выполнить аналогичную задачу).
И JavaScript для создания содержимого файла и откройте файл:
var filedata = $('.start-time, .end-time, .Location').text();
window.open( "data:text/calendar;charset=utf8," + escape( filedata ) );
Предположительно, вы хотите добавить этот код в событие onclick формы.
У меня нет удобного Outlook, поэтому я не уверен, будет ли он автоматически распознавать тип файла, но он может.
Надеюсь, что это поможет.
Ответ 3
Из того, что я нашел в Интернете и на этом сайте, невозможно заставить это работать в IE, поскольку вам нужно включить определенные заголовки, чтобы IE знал, чтобы загрузить этот файл.
Метод window.open работает для Chrome и Firefox, но не для IE, поэтому вам может потребоваться реструктурировать свой код, чтобы использовать серверный язык для создания и загрузки файла ICS.
Подробнее можно найти в question
Ответ 4
Этот подход работал отлично, однако с IE8 браузер не смог распознать тип файла и отказался открыть его как элемент календаря. Чтобы обойти это, мне пришлось создать код на стороне сервера (и выставить его через службу RESTful), а затем установить заголовки ответов следующим образом:
@GET
@Path("generateCalendar/{alias}/{start}/{end}")
@Produces({ "text/v-calendar" })
public Response generateCalendar(
@QueryParam("alias") final String argAlias,
@QueryParam("start") final String argStart,
@QueryParam("end") final String argEnd) {
ResponseBuilder builder = Response.ok();
builder.header("content-disposition", "attachment;filename=calendar.ics");
builder.entity("BEGIN:VCALENDAR\n<........insert meeting details here......>:VCALENDAR");
return builder.build();
}
Это можно обслуживать, вызывая window.location в URL-адресе службы и работает в Chrome, Firefox и IE8.
Надеюсь, это поможет.
Ответ 5
Хотя это старый вопрос, я также искал интерфейс. Недавно я наткнулся на
Библиотека ICS.js, которая выглядит как ответ, который вы ищете.
Ответ 6
Я столкнулся с проблемой с файлом .ics, я написал здесь, может кто-нибудь помочь мне здесь
Файл .ics (повторяющееся событие) не работает в календаре Apple Calendar/Mac