我有一个 php 页面,显示发票列表。单击任何一张发票都会显示其 pdf 文件。当用户单击任何发票时,嵌入标签的 src 会被 jQuery 更改为相应的 pdf 文件。
工作得很好,但奇怪的是,它在 safari 中的表现与在 Firefox 中的表现不同。
在 Firefox 中,我只需单击发票 -> pdf 显示即可。如果我在那之后点击另一张发票,然后再次点击第一张发票 -> pdf 再次显示。
Safari:如果我重新单击发票,我会得到一个空白的 pdf(嵌入标签)。下载该 pdf 会生成一个 0kb 文件。
似乎只发生在野生动物园中。
有人以前遇到过这个问题并且可能知道这个问题的解决方案吗? 我已经用谷歌搜索并尝试了很多,但它仍然不起作用。
Html:
<div class="card-body">
<embed id="invoice_scan" src="" type="application/pdf" width="100%" height="400px" />
</div>
jQuery:
$('#invoice_scan').attr('src', '/docs/pdf_file1.pdf );
我在使用 Angular 在对象标签中显示 pdf 时遇到了这个问题。 修复方法是从对象标签中删除 type="application/pdf"。
我在使用
<object>
标签的 Safari 15.5 中也遇到类似问题。一旦 PDF 被加载,浏览器就会崩溃。为了游猎,我有条件地删除了 type="application\pdf"
。这似乎有效。
替代选项是使用 iFrame 来处理 PDF。
我在 Safari 上遇到了类似的问题,但删除
type="application/pdf"
属性并没有解决它。我怀疑这与某些缓存问题有关。
我最终在每次按下文件 URL 时将随机查询字符串添加到文件 URL 的末尾,以便每次都会将其作为不同的文件获取。它确实感觉像是一个非常hacky和迂回的解决方案,但可能并不总是实用。