2016-10-03 19 views
0

我正在开发一款应用程序,该应用程序可以生成压缩的.djvu文件并具有查看.djvu文件的页面。如何检查用户的浏览器是否可以使用JavaScript查看DJVU文件

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

我希望积极主动并推荐插件的原因是因为没有通用的解决方案来查看浏览器中的.djvu文件,并且找到合适的插件是不平凡的。

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

+1

这个答案将让你对你的方式:http://stackoverflow.com/questions/5188908/detecting-installed-plugins-under-different-browsers –

+0

@BrandtSolovij这肯定有,谢谢!一旦写完,我将添加我的最终代码作为答案。谢谢你指出我朝着正确的方向。 –

回答

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类型>为不同的文件类型,这可以证明给别人有用的后缀。

例如

if (mimeType && mimeType.suffixes.search("pdf") > -1) 
相关问题