Можно ли определить, активирован ли плагин или нет с помощью JavaScript? - PullRequest
3 голосов
/ 31 июля 2011

Таким способом я обычно определяю плагины, такие как Flash Player :

for (var el in navigator.plugins) {
    if (navigator.plugins[el].name &&
        navigator.plugins[el].name.toLowerCase().indexOf('shockwave') !== -1) {
        console.log(navigator.plugins[el]);
    }
}

Я не ищу кросс-браузерное решение или не хочу проверить, правильно ли это или нет. Как проверить, активен ли этот плагин или нет?

Ответы [ 3 ]

6 голосов
/ 08 августа 2011

Оба других решения работают, чтобы выяснить, установлен ли плагин И включено ли.

В настоящее время нет способа узнать, установлен ли плагин, но отключен ли он. Navigator.plugins не содержит отключенных плагинов, которые все еще установлены.

1 голос
/ 31 июля 2011

navigator.plugins - это массив, поэтому вы должны использовать for each в современных браузерах и выполнять итерации с индексом, иначе:

function pluginActive(pname) {
    for (var i = 0;i < navigator.plugins.length;i++) {
        if (navigator.plugins[i].name.indexOf(pname) != -1) {
            return true;
        }
    }
    return false;
}

console.log("Flash plugin " +
            (pluginsActive("Shockwave Flash") ? "active" : "not present"));

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

0 голосов
/ 31 июля 2011

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

...