Chrome默认会阻止不是用户直接操作产生的弹出窗口。在您的情况下,我猜测调用window.open的操作是在回调函数中进行的。这使得它成为异步操作,而Chrome会对其进行阻止。
$scope.userClicked = function(){
$http.post('your/api/endpoint',{data:x}).then(function(r){
$window.open(r.data.url,'window name','width=800,height=600,menubar=0,toolbar=0');
});
}
不过,有一个解决方法可以让它工作。在回调函数之外实例化您的窗口,并且您可以在回调函数中引用该变量来更改该窗口的目标URL。
$scope.userClicked = function(){
var popup = $window.open('','window name','width=800,height=600,menubar=0,toolbar=0');
popup.document.write('loading ...');
$http.post('your/api/endpoint',{data:x}).then(function(r){
popup.location.href = r.data.url;
});
}