Javascript способ перечислить доступные плагины для IE - PullRequest
8 голосов
/ 27 мая 2009

Есть ли быстрый способ получить список в JavaScript доступных плагинов Active X?

Мне нужно проверить, был ли установлен плагин, прежде чем я действительно попытаюсь его запустить.

По сути, я хочу создать страницу с надписью «Плагин установлен и работает правильно», или у него не получается изящно.

Я не уверен, как изящно выйти из строя, если плагин недоступен.

Ответы [ 4 ]

10 голосов
/ 27 мая 2009

Просто try это.

try {
  var plugin = new ActiveXObject('SomeActiveX');
} catch (e) {
  alert("Error"); // Or some other error code
}
2 голосов
/ 27 мая 2009

Тег object отобразит все, что находится внутри него, если объект не может быть создан:

<object ...>
 <p>
 So sorry, you need to install the object.  Get it <a href="...">here</a>.
 </p>
</object>

Итак, изящный сбой встроен, и вам вообще не нужно использовать скрипт.

0 голосов
/ 26 ноября 2013

Для Internet Explorer 11 вы можете использовать navigator.plugins JS API, но вам нужно добавить соответствующие ключи реестра, чтобы IE11 мог его обнаружить:

HKLM\SOFTWARE\Microsoft\Internet Explorer\NavigatorPluginsList

или для 64 бит

HKLM\SOFTWARE\Wow6432\Microsoft\Internet Explorer\NavigatorPluginsList

например. для плагина с именем «ABC» и MIME-типом «application / abc»:

  • добавить ключ HKLM \ SOFTWARE \ Wow6432 \ Microsoft \ Internet Explorer \ NavigatorPluginsList \ ABC
  • создать подраздел для каждого пользовательского MIME тип поддерживается плагином, используя значение типа MIME в качестве имени подключа, например, "Приложение / а"

Затем проверка существования плагина выполняется с помощью этого кода:

var plugin = navigator.plugins["<your plugin activex id>"];
if(plugin) {
  //plugin detected
} else {
  //plugin not found
}

Подробнее об этом здесь: http://msdn.microsoft.com/en-us/library/ie/dn423948(v=vs.85).aspx

0 голосов
/ 27 мая 2009

Может быть, этот скрипт может помочь

function detectPlugin() {
// allow for multiple checks in a single pass
var daPlugins = detectPlugin.arguments;

// consider pluginFound to be false until proven true
var pluginFound = false;

// if plugins array is there and not fake
if (navigator.plugins && navigator.plugins.length > 0) {
var pluginsArrayLength = navigator.plugins.length;

// for each plugin...
for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {

    // loop through all desired names and check each against the current plugin name
    var numFound = 0;
    for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) {

    // if desired plugin name is found in either plugin name or description
    if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) || 
        (navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) {
        // this name was found
        numFound++;
    }   
    }
    // now that we have checked all the required names against this one plugin,
    // if the number we found matches the total number provided then we were successful
    if(numFound == daPlugins.length) {
    pluginFound = true;
    // if we've found the plugin, we can stop looking through at the rest of the plugins
    break;
    }
}
}
return pluginFound;} // detectPlugin

Назовите это, например,

pluginFound = detectPlugin('Shockwave','Flash');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...