我需要检查浏览器是否能够在 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/