在$ http.get的.then中的Safari 10.0.1 $ window.open返回undefined

时间:2017-01-06 21:18:18

标签: javascript angularjs google-chrome safari

在MacOS Sierra上的野生动物园下载pdf文档时遇到问题。我们从服务器获取dataUrl,然后使用带有createObjectURL的$ window.open将文件推送到浏览器。但所有这些并不重要。但这是一个重现我的问题的片段:

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来显示问题,网址是:zlib compressed

以下是chrome(mac)的日志 http://jsfiddle.net/ADukg/9023/

这是来自safari 10(mac)的日志

chrome console log

为什么$ http.get(...)中的safari窗口未定义。然后(...)

1 个答案:

答案 0 :(得分: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();
     });
    } 
});