javascript - 如何在javascript中检查浏览器是否有pdf查看器

标签 javascript pdf firefox

我需要检查浏览器是否能够在 iframe 中显示 pdf。

我试图简单地检查 mimeTypes 或插件,但现在在 mac 上的 Firefox 中,它似乎工作不正常,它显示空数组。

function isPDFSupported(): boolean {
  let hasPDFViewer = false;
  try {
    const pdf =
      navigator.mimeTypes && (navigator.mimeTypes as any)['application/pdf']
        ? (navigator.mimeTypes as any)['application/pdf'].enabledPlugin
        : 0;
    if (pdf) hasPDFViewer = true;
  } catch (e) {
    if ((navigator.mimeTypes as any)['application/pdf'] != null) hasPDFViewer = true;
  }

  return hasPDFViewer;
}

另请检查developer.mozilla 页面中的mimeTypes https://developer.mozilla.org/en-US/docs/Web/API/Navigator/mimeTypes它表明 mimeTypes 和插件已被弃用...

您知道其他选择吗?或者只是简单地执行 IE 下载 pdf 并在其他情况下尝试显示 pdf 的操作?

最佳答案

我最近遇到了同样的挑战,并找到了一种检查 PDF 查看器插件的方法。

正如 Mozilla documentation 中所解释的那样, navigator.plugins 属性返回一个 PluginArray 对象,其中列出了应用程序中安装的所有插件。

PDF 内联查看插件将在插件名称中包含“PDF 查看器”,例如“Chrome PDF 查看器”或“Microsoft Edge PDF 查看器”。因此,您可以检查是否有任何插件包含此字符串,如下所示:

if ('PDF Viewer' in navigator.plugins) {
  // your code
}

这对我来说效果很好。不过,我需要指出的是,此方法已被弃用,因此我不确定它还会受支持多久。

关于javascript - 如何在javascript中检查浏览器是否有pdf查看器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71306703/

相关文章:

excel - 当文档另存为 PDF 时,VBA 超链接不起作用

javascript - 通过注册表安装的 Firefox 附加组件是否可以使用 updateURL?

javascript - 在 Firefox 3.6 中使用 JavaScript 解压缩 zip 存档

javascript - SetInterval 是否在单独的线程上运行?该方法如何工作?

windows - 如何在 Windows 8 Metro 应用程序中使用 native pdf 阅读器?

javascript - 使用 ajax 和 jquery 验证提交值

php - Laravel thujohn/pdf ID 已在 DOM 中定义

python - RPI 上的 Selenium Webdriver 拒绝来自 Crontab 的连接,可从终端运行

java - WebSocket 握手 : Unexpected response code: 404 -

javascript - 用户共享的 GEOlocation 不适用于谷歌地点