【问题标题】:How to check if the user's browser can view DJVU files using JavaScript如何检查用户的浏览器是否可以使用 JavaScript 查看 DJVU 文件
【发布时间】:2016-10-07 18:10:43
【问题描述】:

我正在开发一个生成压缩 .djvu 文件并有一个用于查看 .djvu 文件的页面的应用程序。

我想主动检查用户的浏览器是否能够打开 .djvu 文件,并在他们的浏览器无法打开 .djvu 文件时提供推荐插件的链接。

我之所以要积极主动地推荐插件,是因为没有通用的解决方案可以在浏览器中查看 .djvu 文件,找到合适的插件并非易事。

我目前的解决方案(在编写任何代码之前)是检查用户的浏览器,然后检查是否安装了特定的插件,但这不是很好或未来的证明。 (例如,如果用户安装了我没有检查的不同/新插件)

【问题讨论】:

  • 这个答案会让你上路:stackoverflow.com/questions/5188908/…
  • @BrandtSolovij 那肯定有,谢谢!写完后,我将添加我的最终代码作为答案。感谢您为我指明正确的方向。

标签: javascript cross-browser djvu


【解决方案1】:

这可能不是一个很好的解决方案,但在功能上还可以。它依赖于插件后缀(支持的文件类型),我注意到并非所有开发人员都包括在内,因此它不是一个包罗万象的解决方案。

var numPlugins = navigator.plugins.length;
var djvuPluginDetected = false;
var djvuMimeTypes = ["image/x-djvu", "image/vnd-djvu", "image/x.djvu", "image/vnd.djvu"];   // Array of the different mime formats that may be used by plugins
for (var i = 0; i < numPlugins; i++) {
    var plugin = navigator.plugins[i];
    var numMimeTypes = plugin.length;
    for (var j = 0; j < numMimeTypes; j++) {
        var mimeType = plugin[j];
        if (mimeType.suffixes.indexOf("djvu") > -1) {
            djvuPluginDetected = true;
        }
        if(djvuMimeTypes.indexOf(mimeType.type) > -1) {
            djvuPluginDetected = true;
        }
    }   // end for numMimeTypes
}   // end for numPlugins
// If there is no plugin that supports "djvu" was found then show the modal.
if (!djvuPluginDetected) {
    $('#getdjvuPluginModal').modal('show');
}

这也可用于通过搜索不同文件类型的插件 > mime type > 后缀来检查不同文件类型的插件,这可能对其他人有用。

例如

if (mimeType && mimeType.suffixes.search("pdf") > -1) 

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 2016-05-29
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2012-08-31
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多