2017-07-17 20 views
1

iframe内でPDFをレンダリングしようとしています。 Mozilla(v54)とChrome(v59)では正常に動作していますが、PDFをロードするリンクをクリックするとIE(v11)で何も起こりません。いくつかのデバッグの後、Chrome/FirefoxのURLはblob:http://localhost:37444/5a8e7fed-cd61-4c58-904c-fad2ae169718で、IE(v11)ではblob:B7395CB5-169D-471F-BB8F-AA90EAFB6DDBです。なぜURL.createObjectURL(ブロブ)がIE(V11)でhttpリクエストURL.createObjectURL(blob)がIE 11で適切なURLを作成していません

function (iframe, url, headers) {    

     var xhr = new XMLHttpRequest(); 

     xhr.open('GET', url); 
     xhr.onreadystatechange = handler; 
     xhr.responseType = "arraybuffer"; 

     headers.forEach(function (header) { 
      xhr.setRequestHeader(header[0], header[1]); 
     }); 
     xhr.send(); 

     function handler() { 
      if (this.readyState === this.DONE) { 

       if (this.status === 200) { 
        var blob = new Blob([xhr.response], { type: "application/pdf" }); 
        var objectUrl = URL.createObjectURL(blob);      

        iframe.src = objectUrl; 
       } else { 
        console.error('XHR failed', this); 
       } 
      } 
     } 
+3

[IE 11でのバイナリファイル(pdf)の表示](https://stackoverflow.com/questions/26161314/displaying-binary-file-pdf-in-ie-11) – demo

+0

あなたが提案している解決策あなたはそれをオープンまたはIE(v11)で保存しなければならないと言いますが、私はモーダルボックスでPDFをレンダリングしたいと思います。もしあれば、回避策を提案してください –

答えて

0

はIEは私が使用してthink.Soセキュリティ上の理由のこれらのブロブオブジェクトのURLを作成しませんが付加されていませんVARいるObjectURL = URL.createObjectURL (blob); iframeまたはembedタグの内部で使用できるソースURLは表示されません。 私は同じ問題に直面し、fix.But答えを得ることができませんでしたたくさんの検索。代わりに私はそれを次のように解決しました。 あなたは、上記のIEのコードは、彼がファイルを保存するか、直接それを開くために望んでいるかどうかということをユーザーに促すメッセージが表示されますIE

if (bowser.msie && window.navigator.msSaveOrOpenBlob) { 
    navigator.msSaveOrOpenBlob(file, fileName); 
}else{ 
    //do what you were doing for other than IE 
} 

ために以下を使用することができます。 ユーザーは「開く」ボタンをクリックすることができ、IEはPDFをデフォルトのリーダーにダウンロードせずに表示します。

関連する問題