簡體   English   中英

在 javascript 中,我如何檢測瀏覽器是否會顯示或下載 pdf?

[英]in javascript how can I detect if a browser will display or download a pdf?

說我有:

  • 帶有 iframe 的網頁: <iframe src="" style="display:none;"></iframe>

  • 指向 PDF 文檔的 URL: http://www.example.com ://www.example.com

  • 一些會做iframe.src = pdfurl javascript

  • 將觸發此類 javascript 的按鈕

  • 如果瀏覽器要顯示 PDF 內聯,按鈕會顯示“查看 pdf”,單擊時會使 iframe 可見

  • 否則它會說“下載pdf”

我找到了一種檢測 pdf 是否已加載到 iframe 中的方法:在onload觸發后讀取iframe.contentDocument.contentType ,但是

  • 這不允許我顯示正確的按鈕
  • 如果正在下載文件, onload不會觸發

謝謝 :)

要告訴客戶端的瀏覽器將響應下載為文件,請在響應中將 Content-Disposition HTTP 標頭設置為“附件”。 這不能保證,但它是告訴瀏覽器如何處理內容的正確方法。

在現代瀏覽器中,JavaScript 的全局 Navigator 對象有一個 plugins 屬性,里面填充了一個 Plugins 數組,如果你能找到 Mimetype application/pdf 的 Plugin,你可以放心地假設瀏覽器會內聯顯示 pdf 文件,只要服務器當然,不會顯式發送 content-disposition: 附件標頭。

§ 8.9.1.6 PDF 查看支持

window.navigator.pdfViewerEnabled

如果用戶代理在導航到 PDF 文件時支持內聯查看,則返回true ,否則返回false 在后一種情況下,PDF 文件將由外部軟件處理。

MDN 網絡文檔文章

瀏覽器兼容性表

支撐台

您可以向該資源發送HEAD 請求並檢查正在發回的Content-TypeContent-Disposition值。 根據這些信息,您可以確定瀏覽器是否會顯示或下載該資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM