2013-05-15 3 views
0

Я пытаюсь динамически генерировать файл vCal с помощью Javascript, и все работает нормально, пока я не попытаюсь в IE8. В IE8 браузер пытается открыть файл календаря в панели запроса вместо загрузки. Это образец кода, который я используюInternet Explorer 8 и файлы vCalendar/ICS

var iCal = 
    "BEGIN:VCALENDAR\n" + 
    "PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN\n" + 
    "METHOD:PUBLISH\n" + 
    "BEGIN:VEVENT\n" + 
    "ATTENDEE;CN=\""+locationAlias+"\";CUTYPE=RESOURCE;ROLE=NON-PARTICIPANT;RSVP=TRUE:mailto:"+locationEmail+"\n" + 
    "DTEND;TZID=\"GMT Standard Time\":"+dend+"\n" + 
    "DTSTART;TZID=\"GMT Standard Time\":"+dstart+"\n" + 
    "LOCATION:"+locationName+"\n" + 
    "ORGANIZER;CN=\"<someuser>\":mailto:<somemailto>\n" + 
    "END:VEVENT\n" + 
    "END:VCALENDAR"; 

возвращение iCal;

Затем я пытаюсь открыть файл календаря, используя следующее:

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

Любые предложения относительно того, почему IE8 не может распознать файл?

ответ

-1

Чтобы обойти эту проблему, я создал файл iCal на стороне сервера и был открыт для клиента через веб-сервис RESTful.

Для того, чтобы определить реакцию как календарь типа я установить следующий

ResponseBuilder builder = Response.ok(); 
    builder.header("content-disposition", 
      "attachment;filename=calendar.ics"); 

Когда IE8 получает ответ он автоматически пытается загрузить/открыть файл, используя мой экземпляр Outlook, по умолчанию.

Это работает во всех браузерах. У него есть накладные расходы, требующие запроса на сервер, однако он также позволяет мне применять дополнительную обработку по запросу, например, если проверка конференц-зала действительна и т. Д.

+0

Это не отвечает на его вопросы. Он хочет сгенерировать это в javascript. – msponagle

+0

Да, но браузер IE не распознает файлы OFT при генерации динамически, поэтому это необходимо сделать с помощью логики на стороне сервера. Я не включал логику для этого в JavaScript, потому что этот подход в настоящее время не является полным решением ..... – cduggan

+0

также код, который был включен выше, будет работать во всех других браузерах – cduggan

 Смежные вопросы

  • Нет связанных вопросов^_^