2012-04-25 11 views
1

私はIEに問題があり、誰かが助けてくれることを期待していました.... 私は訪問者が来て特定の会議にサインアップするサイトを持っています自分が選んだカレンダーの予定を生成できるようにしたい。選択肢はgmail、yahoo、およびOutlookです。 gmailとyahooの予定はすべてのブラウザで期待通りに生成されますが、Outlookの予定はIE以外のすべてのブラウザで機能します。 IEはファイル保存ダイアログをスローする代わりに、新しいウィンドウを開き、URLをナビゲートしようとします。Internet Explorerオープン予定時刻javascript

私はあなたがファイル保存ダイアログが「のContentを追加することにより、IEで動作するように取得することができ、この

//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'; 
} 

答えて

0

のように、私は少し修正のiCalendar jQueryライブラリを使用してJavaScriptでICSマークアップを構築していますDisposition:attachment "というレスポンスヘッダーを使用します。ただし、これはサーバーで発生する必要があり、JavaScriptがヘッダー情報を変更できないため、クライアント側のスクリプトでは発生しません。

詳細はthis answerを参照してください。

+0

ありがとうございました!コードが変更され、すべてがgreat.Dynamicコンテンツがサーバー上の応答に追加される可能性があるので、javascriptで試してみる必要はありません。http://www.west-wind.com/ weblog/posts/2007/May/21/ASPNETダイアログで保存するファイルをダウンロードする –