';申请表/pdf';safari iframe中的blob不显示,但blob url在safari中的单独选项卡中工作

';申请表/pdf';safari iframe中的blob不显示,但blob url在safari中的单独选项卡中工作,pdf,iframe,safari,Pdf,Iframe,Safari,它适用于Edge、Chrome、Firefox,但不适用于safari。在Safari中,iframe似乎知道它应该显示pdf(灰色背景),但里面没有页面 const pdf = new Blob([new Uint8Array(arrayBuffer)], { type: 'application/pdf' }) setDataStreamURL(window.URL.createObjectURL(pdf)) ... <iframe title={iframeTitle} classN

它适用于Edge、Chrome、Firefox,但不适用于safari。在Safari中,iframe似乎知道它应该显示pdf(灰色背景),但里面没有页面

const pdf = new Blob([new Uint8Array(arrayBuffer)], { type: 'application/pdf' })
setDataStreamURL(window.URL.createObjectURL(pdf))
...
<iframe title={iframeTitle} className={className} src={dataStreamURL} type={type} />
constpdf=newblob([newuint8array(arrayBuffer)],{type:'application/pdf'})
setDataStreamURL(window.URL.createObjectURL(pdf))
...
如果我给它一个像这样的pdf的url,它确实可以正常工作:


但是我需要给它一个
blob:…
url,它是由
window.url.createObjectURL(pdf)

创建的,我回答这个问题可能有点晚了,但我在Safari上使用iframe预览blob url中的pdf时遇到了同样的问题<代码>文件阅读器帮了我的忙。从代码中,不要使用
window.URL.createObjectURL(pdf)
,而是通过
FileReader
读取blob,它是pdf格式的,如下所示:

constpdf=newblob([newuint8array(arrayBuffer)],{type:'application/pdf'})
const reader=new FileReader();
reader.onload=()=>{
const url=reader.result;//在iframe src中使用此'url'
};
reader.readAsDataURL(pdf);
请注意这个技巧在Safari中有效,但在其他浏览器中可能不起作用,因此在其他浏览器中使用blob url,在Safari中使用这个技巧