Установка window.location или window.open в AngularJS дает "доступ запрещен" в IE 11
Я, по общему признанию, новичок в AngularJS, но не могу понять, почему этот код работает в Chrome и Firefox, но дает "Access is denied"
в javascript-консоли с IE 11.
Мне нужно отобразить PDF через аутентифицированный вызов REST. В идеале это будет отображаться в окне всплывающего окна (предварительного просмотра).
Код до сих пор выглядит следующим образом:
$http.post( url, payload, {
headers : {
"Authorization": token
},
responseType: "arraybuffer"
}).success(function ( data ) {
var file = new Blob( [ data ], { type: 'application/pdf' });
var fileURL = URL.createObjectURL( file );
window.open( fileURL );
}
window.open()
дает сообщение "Access is denied"
для IE11, но работает в Chrome и Firefox. Я попытался перейти на window.location()
и получил ту же ошибку.
Это не междоменная проблема (все в одном домене foo.net).
Ответы
Ответ 1
Сохранение текста в локальном файле в Internet Explorer 10
Похоже, IE блокирует window.open на blobs, но выполняет свои собственные функции для открытия и сохранения blob. Вместо этого попробуйте
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob);
}
else {
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}