Подтвердить что ты не робот

Создать файл .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?

4b9b3361

Ответ 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, которая выглядит как ответ, который вы ищете.