2016-10-03 5 views
0

Я работаю над приложением, которое создает сжатые файлы .djvu и имеет страницу для просмотра файлов .djvu.Как проверить, может ли браузер пользователя просматривать файлы DJVU с помощью JavaScript

Я хочу проактивно проверить, может ли браузер пользователя открывать файлы .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'); 
} 

Это также может быть использован для проверки плагин для различных типов файлов с помощью поиска плагина> типа мима> суффиксы для другого типа файла, который может оказаться полезным для кого-то других.

например.

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

 Смежные вопросы

  • Нет связанных вопросов^_^