如何检查用户的浏览器是否可以使用 JavaScript 查看 DJVU 文件

How to check if the user's browser can view DJVU files using JavaScript

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

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

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

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

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

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 类型 > 后缀来检查不同文件类型的插件,这可能对其他人有用。

例如

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