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

时间:2016-10-03 12:16:14

标签: javascript cross-browser djvu

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

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

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

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

1 个答案:

答案 0 :(得分: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');
}

这也可以通过搜索插件&gt;来检查不同文件类型的插件。 <哑剧类型>不同文件类型的后缀,可能对其他人有用。

e.g。

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