PDFプレビューと大量のbase64データ(10mb以上)のiframeを持っています。).
<iframe src="" type="application/pdf"></iframe>'
このデータはどのように使用できますか?データを設定しようとすると:
$("iframe").attr("src", data);
一部のブラウザがクラッシュしています。
Srcリンクがありません。このデータはajaxによって受信されました。助言がありますか?
これを試してください:多分手遅れです:
<iframe src="data:application/pdf;base64,YOUR_BINARY_DATA" height="100%" width="100%"></iframe>
AJAX経由でフェッチする必要がある場合、ヘッダーなどを設定するには、 URL.createObjectURL()
を確認してください。バイトのチャンクが与えられると、iframeのsrc
に適したものが得られます。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'some.pdf');
xhr.onreadystatechange = handler;
xhr.responseType = 'blob';
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.send();
function handler() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
// this.response is a Blob, because we set responseType above
var data_url = URL.createObjectURL(this.response);
document.querySelector('#output-frame-id').src = data_url;
} else {
console.error('no pdf :(');
}
}
}
オブジェクトのURLはかなり興味深いものです。形式はblob:https://your.domain/1e8def13-3817-4eab-ad8a-160923995170
です。それらを新しいタブで実際に開いて応答を確認することができ、それらを作成したコンテキストが閉じられると破棄されます。
ここに完全な例があります: https://github.com/courajs/pdf-poc
Srcリンクがありません。このデータはajaxによって受信されました。
AJAXでデータをロードする場合、AJAXデータのロードと$("iframe).attr("src", data)
フェーズをバイパスして、同じ URLをiframeに直接フィードできるはずです。 。このAJAXリクエストがbase64データのみを返す場合、リクエストを行う必要はありません。 set iframeのsrcをthisurlに直接設定するだけで動作します。
特に何が問題なのかはわかりませんが、jQueryを使用してiframe
+ src
を設定する方法の例であるjsFiddleを次に示します。
Iframeでのsrc
の設定とは関係のない、ブラウザのクラッシュを引き起こすその他の問題がある可能性があります。