web-dev-qa-db-fra.com

La définition de window.location ou window.open dans AngularJS donne "l'accès est refusé" dans IE 11

Je suis certes un débutant AngularJS mais je ne trouve pas pourquoi ce code fonctionne dans Chrome et Firefox mais donne "Access is denied" Dans la console javascript avec IE 11.

J'ai besoin d'afficher un PDF via un appel authentifié REST. Idéalement, cela devrait s'afficher dans une fenêtre contextuelle (aperçu)).

Jusqu'à présent, le code ressemble à ceci:

$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 );
}

La window.open() donne le message "access is denied" Pour IE11, mais fonctionne dans Chrome et Firefox. J'ai essayé de passer à window.location(), et j'ai obtenu la même erreur.

Ce n'est pas un problème inter-domaines (tout est dans le même domaine foo.net).

23
Matt

Enregistrement du texte dans un fichier local dans Internet Explorer 1

Il ressemble à IE bloque window.open sur les blobs, mais a implémenté leurs propres fonctions pour ouvrir et enregistrer les blobs. Essayez plutôt

if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob);
}
else {
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}
55
Elizabeth Kilson