如何检测浏览器是否会使用 JavaScript 显示或下载 PDF?

问题描述 投票:0回答:4

说我有:

  • 带有 iFrame 的网页:
    <iframe src="" style="display:none;"></iframe>
  • 指向 PDF 文档的 URL:
    http://www.example.com/file.pdf
  • 一些 JavaScript 就可以了
    iframe.src = pdfurl
  • 一个将触发此类 JavaScript 的按钮
  • 如果浏览器要内联显示 PDF,按钮将显示“查看 PDF”,单击后将使 iFrame 可见
  • 否则会显示“下载 PDF”

我找到了一种检测 PDF 是否已加载到 iFrame 中的方法:在

iframe.contentDocument.contentType
触发后读取
onload
,但是

  • 这不允许我显示正确的按钮
  • 如果正在下载文件,
  • onload
    不会触发

谢谢:)

javascript pdf iframe browser download
4个回答
5
投票

要告诉客户端浏览器将响应下载为文件,请将响应中的 Content-Disposition HTTP 标头设置为“附件”。这并不能保证,但这是告诉浏览器如何处理内容的正确方法。


3
投票

§ 8.9.1.6 PDF 查看支持

window.navigator.pdfViewerEnabled

如果用户代理支持 PDF 文件的内联查看,则返回

true
导航到它们,或者
false
否则。在后一种情况下,PDF 文件 将由外部软件处理。

MDN 网络文档文章

浏览器兼容性表


1
投票

在现代浏览器中,JavaScript的全局Navigator对象有一个plugins属性,其中填充了一组插件,如果您可以找到Mimetype application/pdf的插件,您可以放心地假设浏览器将内联显示pdf文件,只要当然,服务器不会显式发送内容处置:附件标头。


-1
投票

您可以向该资源发送 HEAD 请求,并检查发回的

Content-Type
Content-Disposition
值。根据这些信息,您可以确定浏览器是否会显示或下载该资源。

© www.soinside.com 2019 - 2024. All rights reserved.