【问题标题】:Check Browser Support for specific Mime Type?检查特定 Mime 类型的浏览器支持?
【发布时间】:2013-01-27 22:15:53
【问题描述】:

对于允许在浏览器中预览文档的 Web 应用程序,我想检查用户的浏览器是否支持预览当前文档的 mime 类型。

是否有基于 Javascript 的方法来匹配当前 mime 类型与浏览器支持的类型?

谢谢!

【问题讨论】:

  • 当浏览器向您要执行此操作的服务器请求页面时,它会通过它接受的文档类型列表(HTTP accept 请求标头)发送。因此,您甚至可以在向他们展示页面之前就知道(并且您可以通过将这些信息嵌入到响应中来使 JavaScript 可以使用该信息)。当然,这需要您动态响应初始请求,并且可能不是您想要的。
  • 也许this question 有帮助。他们使用了navigator.mimeTypes,这可能不适用于所有浏览器...
  • @T.J.Crowder:这是个好主意。由于我的应用程序是基于 ExtJS-Ajax 的,这可能是一种很有前途的方法。我会试一试。谢谢!
  • @T.J.Crowder:我刚刚测试了读取http接受头的方法。不幸的是,检索到的信息不是很有用。 Firefox 中的接受标头为:"text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8" IE 只是 "/"为什么包含的信息这么少?
  • @Windwalker:我不知道。太糟糕了……

标签: javascript mime-types browser-support


【解决方案1】:

在最近的浏览器中有 navigatior.plugins 类似数组的对象。您可以检查每个插件的 MIME 类型。

这里是gistjsfiddle的解决方案。

var mimeCheck = function (type) {
    return Array.prototype.reduce.call(navigator.plugins, function (supported, plugin) {
        return supported || Array.prototype.reduce.call(plugin, function (supported, mime) {
            return supported || mime.type == type;
        }, supported);
    }, false);
};

【讨论】:

  • 它可以工作,但它说 chrome 不支持 image/jpg。有没有办法获取包括图片在内的所有类型。
  • @Тёма Пендюрин 它是否识别浏览器插件?我安装了一个视频播放器,但它仍然显示video/mp4 in not supported。 text/plainimage/* 也被错误地标记为“不支持”。你能描述它应该如何工作和/或证明它应该如何工作吗?
  • 更新:在使用多种 MIME 类型 (wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht) 对其进行测试后,它仅适用于 application/pdf
【解决方案2】:

您可以进行 AJAX 调用并检查响应标头的 mimetype。

 $.ajax({
    type: "GET",
    url: 'http://..../thing.pdf',
    success: function (output, status, xhr) {
      alert("done!"+ xhr.getAllResponseHeaders());
      alert("done!"+ xhr.getResponseHeader("Content-Type"));
    }
  });

【讨论】:

  • 感谢您的提示,这听起来很有希望。不幸的是,对二进制文件的 Ajax 调用在 IE 中不起作用,请参阅:stackoverflow.com/questions/9783330/…
  • 啊,该死的,它似乎总是停在 IE 上不是吗:(
  • 想法:你如何创建一个代理,例如:proxy.php?file=document.pdf IE 不会将其作为二进制文件处理。您可以在代理中设置响应标头。只需通过 mime 类型等。
  • 您似乎也可以使用 VB 脚本黑客来使其工作。祝你好运找到解决方案!
  • 我试过了。但不幸的是,这并没有回答问题,当前文档的 mime 类型是否可以被用户的浏览器显示...
【解决方案3】:

在这个问题中,我认为有相同的问题,请尝试检查一下

Check if a browser supports a specific MIME type?

【讨论】:

  • 对不起,这不完全是我的情况。我是客户端;即Javascript(不是所提到的问题中的PHP),我确实有一个具有某种mime类型的文档,我想决定是否a)打开在内部预览中显示文档,如 或 b) 如果不支持 mime 类型,则跳过内部预览
【解决方案4】:

如果您定义了特定文档类型需要哪个插件,那么您可以尝试查看是否存在需要的插件。至少应该在 Firefox 和 Chrome 上工作。 window.navigator.plugins

【讨论】:

  • 事实上,我们的客户几乎都在使用 IE,因为它对大多数公司来说都是一个标准。如果您总是不得不处理老式浏览器,那就太糟糕了....
  • Chrome 会针对该示例链接显示鲜红色的“恶意软件”警告。
  • 似乎链接已损坏,将其删除。在 mozzilla 的页面中也可以看到想法。
猜你喜欢
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2014-03-27
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多