Internet Explorer 8和vCalendar / ICS文件

时间:2013-05-15 13:26:01

标签: jquery outlook icalendar vcalendar

我正在尝试使用Javascript动态生成vCal文件,一切正常,直到我在IE8中尝试。在IE8中,浏览器尝试在请求栏中打开日历文件而不是下载。这是我使用的代码示例

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 个答案:

答案 0 :(得分:-1)

为了解决这个问题,我在服务器端生成了一个iCal文件,并通过RESTful webservice向客户端公开。

为了识别类型日历的响应,我设置了以下内容

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

当IE8收到响应时,它会自动尝试使用我的默认Outlook实例下载/打开文件。

这适用于所有浏览器。它确实需要向服务器请求的开销,但它也允许我对请求应用额外的处理,如验证会议室是否有效等。