2017-01-06 6 views
2

У нас возникли проблемы при загрузке документа PDF на сафари в MacOS Sierra. Мы получаем dataUrl с сервера, а затем используем $ window.open с createObjectURL, чтобы вытащить файл в браузер. Но все, что на самом деле не имеет значения. Но вот фрагмент, чтобы воспроизвести мою проблему:

myApp.controller('MyCtrl', function($scope, $window, $http) {  
    $scope.open = function() { 
     var windowy = $window.open('', '_blank'); 
     console.log('1'); 
     console.log(windowy); 
     $http.get('http://httpbin.org/delay/0').then(function(response) { 
      var windowx = $window.open('', '_blank'); 
      console.log('2'); 
      console.log(windowx); 
     }); 
    } 
}); 

Я создал JsFiddle, чтобы показать проблему, URL-адрес является: http://jsfiddle.net/ADukg/9023/

Вот бревно из хромированной (макинтош) chrome console log

А вот бревно из сафари 10 (макинтош)

safari console log

Почему окно не определено на сафари в $ http.get (...). Затем (...)

+0

Всплеск блокатора. – epascarello

+0

Почему первый window.open не заблокирован? –

+1

, потому что вы, вероятно, сделали действие click ... – epascarello

ответ

0

мы решили нашу проблему прагматично, может быть, не самое элегантное решение, но сейчас он будет делать

myApp.controller('MyCtrl', function($scope, $window, $http) {  
    $scope.open = function() { 
     var window = $window.open('', '_blank'); 
     $http.get('http://httpbin.org/delay/0').then(function(response) { 
      console.log(window); 
     }, function() { 
      window.close(); 
    }); 
    } 
});