1

我想創建一個ICS文件點擊每個我的div內的按鈕。 這適用於Chrome和Firefox。但是,它無法在IE上運行。window.open不工作在IE下載一個事件

'window.open'中的代碼有什麼問題?

另外,如何根據事件ID更改th文件的名稱?

下面是

angular.module('myApp', []).controller('myCtrl', function($scope){ 
 
    $scope.card = [{ 
 
    Name: "New Year Celebration", 
 
    Description: "", 
 
    Venue: "", 
 
    StartDate: "Fri Dec 29 2017 23:30:00 GMT+0530", 
 
    EndDate: "Sat Dec 30 2017 00:30:00 GMT+0530", 
 
    EventID: "1" 
 
    }, { 
 
    Name: "25th Anniversary Celebration", 
 
    Description: "25th Anniversary Celebration of organization", 
 
    Venue: "Auditorium", 
 
    StartDate: "Wed May 31 2017 17:30:00 GMT+0530", 
 
    EndDate: "Wed May 31 2017 20:30:00 GMT+0530", 
 
    EventID: "2" 
 
    }, { 
 
    Name: "Annual Day", 
 
    Description: "", 
 
    Venue: "", 
 
    StartDate: "Fri Oct 13 2017 14:30:00 GMT+0530", 
 
    EndDate: "Fri Oct 13 2017 17:30:00 GMT+0530", 
 
    EventID: "3" 
 
    }]; 
 

 
    $scope.add = function(eventObj) { 
 
    $scope.eventID= this.eventObj.EventID; 
 
    $scope.startDate= this.eventObj.StartDate; 
 
    $scope.endDate= this.eventObj.EndDate; 
 
    $scope.venue= this.eventObj.Venue; 
 
    $scope.subject= this.eventObj.Name; 
 
    $scope.result= this.eventObj.Description; 
 
    //console.log(this); 
 
    $scope.icsMSG = "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nDTSTART:" + $scope.startDate +"\nDTEND:" + $scope.endDate +"\nLOCATION:" + $scope.venue + "\nSUMMARY:" + $scope.subject + "\nDESCRIPTION:"+ $scope.result +"\nEND:VEVENT\nEND:VCALENDAR"; 
 
\t window.open("data:text/calendar;charset=utf8," + escape($scope.icsMSG),"_self"); 
 
    }; 
 
});
.event { 
 
    height: 150px; 
 
    width: 250px; 
 
    border: 1px solid lightgrey; 
 
    background-color: skyblue; 
 
    margin: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <div ng-repeat="eventObj in card" class="event"> 
 
    Subject: <span>{{eventObj.Name}}</span> 
 
    <br /><br /> \t 
 
    Venue:<span>{{eventObj.Venue}}</span> 
 
    <br /><br /> \t 
 
    Date:<span>{{eventObj.StartDate | date:'fullDate'}}</span> 
 
    <br /><br /> 
 
    <button ng-click="add(eventObj.EventID)">Add to Outlook</button> 
 
    </div> 
 
</div>

回答

0

數據URI不能用於導航,用於腳本,或填充在IE幀或iframe元素的代碼。

解決方案是使用navigator.msSaveBlob生成文件並提示用戶保存它。 Refer this answer

您也可以使用類似downloadify,而不是數據的URL(會爲IE瀏覽器一樣)提到here