web-dev-qa-db-ja.com

AngularJSでwindow.locationまたはwindow.openを設定すると、IE 11で「アクセスが拒否されました」と表示される

私は確かにAngularJSの初心者ですが、このコードがChromeおよびFirefoxで動作する理由を見つけることができませんが、IE 11.でjavascriptコンソールに_"Access is denied"_を与えます.

認証済みの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()はIE11の_"access is denied"_メッセージを提供しますが、ChromeおよびFirefoxで動作します。 window.location()に変更しようとしましたが、同じエラーが発生しました。

これはクロスドメインの問題ではありません(すべてが同じfoo.netドメインにあります)。

23
Matt

Internet Explorer 10のローカルファイルにテキストを保存する

IEはBLOBでwindow.openをブロックしますが、BLOBを開いて保存するための独自の関数を実装しました。代わりに試してください

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