0

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 がファイルを認識できない理由について何か提案はありますか?

4

1 に答える 1

-1

この問題を回避するために、サーバー側で iCal ファイルを生成し、RESTful Web サービスを介してクライアントに公開しました。

タイプカレンダーの応答を識別するために、次のように設定します

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

IE8 が応答を受信すると、デフォルトの Outlook インスタンスを使用してファイルを自動的にダウンロード/開こうとします。

これはすべてのブラウザで機能します。サーバーへのリクエストを要求するオーバーヘッドがありますが、会議室が有効であることを検証するなど、リクエストに追加の処理を適用することもできます.

于 2013-07-08T10:14:24.317 に答える