window.open не работает в IE для загрузки события

Я пытаюсь создать файл ICS при нажатии кнопок внутри каждого из моих div. Это отлично работает в Chrome и Firefox. Однако он не работает в IE.

Что не так с кодом в «window.open»?

Кроме того, как изменить имя файла на основе идентификатора события?

Вот код

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";
	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 />	
  Venue:<span>{{eventObj.Venue}}</span>
  <br /><br />	
  Date:<span>{{eventObj.StartDate | date:'fullDate'}}</span>
  <br /><br />
  <button ng-click="add(eventObj.EventID)">Add to Outlook</button>
  </div>
</div>


person Sunny    schedule 10.07.2017    source источник


Ответы (1)


URI данных нельзя использовать для навигации, сценариев или для заполнения элементов фрейма или iframe в IE.

Решение состоит в том, чтобы использовать navigator.msSaveBlob для создания файла и запроса пользователя на его сохранение. Ссылка на этот ответ

Вы также можете использовать что-то вроде downloadify вместо URL-адресов данных (подойдет и для IE), как уже упоминалось < href="https://stackoverflow.com/a/3916267/6043442">здесь

person abhishek khandait    schedule 10.07.2017