Internet Explorer打开Outlook预约javascript

时间:2012-04-25 14:14:34

标签: javascript html internet-explorer

去图,我遇到了IE的问题,并希望有人可以提供帮助.... 我有一个网站,访客将来参加一个特定的会议,然后我希望能够预约他们选择的日历;选择是gmail,yahoo和outlook。 gmail和yahoo约会在所有浏览器中按预期生成,但Outlook预约在除IE之外的每个浏览器中都有效。 IE不会抛出文件保存对话框,而是打开一个新窗口并尝试导航该URL。

我正在使用iCalendar jquery库,我修改了一下并在javascript中构建了ics标记,就像这样

//build ics markup
var event = makeAppointment(settings);
//render ics markup as outlook appointment
window.open("data:text/calendar;charset=utf8," + escape(event));

function makeAppointment()
{
    return 'BEGIN:VCALENDAR\n' +
    'VERSION:2.0\n' +
    'PRODID:jquery.icalendar\n' +
    'METHOD:PUBLISH\n' +
    'BEGIN:VEVENT\n' +
    'UID:' + new Date().getTime() + '@' +
    (window.location.href.replace(/^[^\/]*\/\/([^\/]*)\/.*$/, '$1') || 'localhost')       + '\n' +
    'DTSTAMP:' + $.icalendar.formatDateTime(new Date()) + '\n' +
    (event.url ? limit75('URL:' + event.url) + '\n' : '') +
    (event.contact ? limit75('MAILTO:' + event.contact) + '\n' : '') +
    limit75('TITLE:' + event.title) + '\n' +
    'DTSTART:' + $.icalendar.formatDateTime(event.start) + '\n' +
    'DTEND:' + $.icalendar.formatDateTime(event.end) + '\n' +
    (event.summary ? limit75('SUMMARY:' + event.summary) + '\n' : '') +
    (event.description ? limit75('DESCRIPTION:' + event.description) + '\n' : '') +
    (event.location ? limit75('LOCATION:' + event.location) + '\n' : '') +
    (event.recurrence ? makeRecurrence(event.recurrence) + '\n' : '') +
    'END:VEVENT\n' +
    'END:VCALENDAR';
}

1 个答案:

答案 0 :(得分:0)

您可以通过添加" Content-Disposition:attachment"来获取文件保存对话框以在IE中工作。响应标题。但是,这必须在服务器上发生,并且不能在客户端脚本中发生,因为JavaScript无法修改标头信息。

有关详细信息,请参阅this answer