создать файл .ics на лету, используя javascript или jquery? - PullRequest
16 голосов
/ 14 декабря 2011

Может кто-нибудь сказать мне, есть ли какой-нибудь плагин 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?

Ответы [ 5 ]

31 голосов
/ 15 января 2013

вам нужно будет сделать это в формате ICS.также вам нужно будет конвертировать дату и часовой пояс;EG 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:me@google.com\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:me@gmail.com\nORGANIZER;CN=Me:MAILTO::me@gmail.com\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));
    });

Приведенный выше пример создаст файл ics для загрузки.пользователь должен будет открыть его, а остальное сделает iCal или календарь Google.

1 голос
/ 31 июля 2015

Из того, что я нашел в Интернете и на этом сайте, невозможно заставить это работать в IE, так как вам нужно включить определенные заголовки, чтобы IE знал, чтобы загрузить этот файл.

Окно.Метод open работает для Chrome и Firefox, но не для IE, поэтому, возможно, вам придется реструктурировать свой код, чтобы использовать серверный язык для генерации и загрузки файла ICS.

Более подробную информацию можно найти в этом вопросе

1 голос
/ 25 марта 2012

Это старый вопрос, но у меня есть некоторые идеи, которые могут помочь вам начать (или кому-либо еще, кому нужно выполнить аналогичное задание).

И JavaScript для создания содержимого файла и открытия файла:

var filedata = $('.start-time, .end-time, .Location').text();
window.open( "data:text/calendar;charset=utf8," + escape( filedata ) );

Предположительно, вы захотите добавить этот код в событие onclick кнопки формы.

У меня нет под рукой Outlook, поэтому я не уверен, что он автоматически распознает тип файла, но это возможно.

Надеюсь, это поможет.

0 голосов
/ 04 февраля 2016

Хотя это более старый вопрос, я также искал внешнее решение. Я недавно наткнулся на Библиотека ICS.js , которая выглядит как ответ, который вы ищете.

0 голосов
/ 03 июля 2013

Этот подход работал нормально, однако в 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 onURL службы и работает в Chrome, Firefox и IE8.

Надеюсь, это поможет.

...