在Microsoft Edge中检测对"application/pdf"的支持

7

我们的网站尝试通过以下检查来检测 application/pdf mimetype 的支持:

function isPdfMimeTypeSupported() {
  if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0)
    for (i = 0; i < navigator.mimeTypes.length; i++) {
      var mtype = navigator.mimeTypes[i];
      if (mtype.type == "application/pdf" && mtype.enabledPlugin)
        return true;
    }
  return false;
}

在Chrome中,这个功能可以正常工作,但是在Microsoft Edge浏览器中,mimeTypes集合只有两个条目:

  • "application/x-shockwave-flash"
  • "application/futuresplash"

由于这个检查失败,我们错误地警告用户,他们的浏览器不支持PDF。

是否有一种在JavaScript中检查PDF支持并适用于Edge浏览器的方法?


这可能表明Edge不支持PDF本地,然而来自微软开发人员的此评论表示PDF是本地支持的。我想知道这是否是一个错误(特性)? - Greg Burghardt
我想知道你是否可以查询 navigator.plugins 并查找特定的Edge PDF渲染器? - Chris Haas
我应该指出,Edge实际上原生支持PDF。如果我使用F12工具来绕过此检查并让它尝试,它能够很好地显示PDF。我们只是想避免用户代理嗅探并进行适当的功能检测...这就是我们遇到障碍的地方。不确定如何在Edge中检查此功能! - Brett Haney
另外,我们检查了navigator.plugins。它只有一个条目,是为“Shockwave Flash”。所以那也行不通。 - Brett Haney
2个回答

5

重要提示:以下答案仅适用于特定时间段

正如上面所建议的,Microsoft Edge内置了原生的PDF查看支持。我不认为有任何版本的Edge缺乏这个功能,但如果有的话,它们将非常罕见。

我们目前计划在不久的将来更新navigator.mimeType,这将导致您目前的方法(如上所述)开始工作。在那之前,我建议您(我为建议这个感到非常抱歉)嗅探用户代理字符串。

这个问题将在未来的Microsoft Edge更新中得到解决。


很棒的答案。问题现在解决了吗?(这个问题是否有任何区域特定的方面?例如,在美国、欧洲、亚洲等地,我们可以期望Edge内置的PDF查看功能正常工作吗?)提前感谢。(编辑:我从您的个人资料中看到您已经不在微软了。请不要费心回答,但如果您碰巧知道...) - T.J. Crowder

1

马克 - 我们正在使用美国版的Windows 10。你提供的关于“N”版本的链接似乎是针对英国/欧洲特定版本的。我们所使用的版本确实支持本地PDF显示,我们只是试图找出如何通过客户端JavaScript检测此功能。 - Brett Haney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接