0

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

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

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

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

4

1 回答 1

0

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

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) 
于 2016-10-05T15:17:34.493 回答