orustammanapov
orustammanapov

Reputation: 1862

Is it possible to detect if a plugin is activated or not through JavaScript?

This way I would normally detect plugins, such as 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]);
    }
}

I'm not looking for a cross-browser solution or want to test if it is the right way or not. What is the way to test if this plugin is active or not?

Upvotes: 3

Views: 3474

Answers (3)

Nagi
Nagi

Reputation: 76

Both of the other solutions work to find out if a plugin is installed AND is enabled.

There is currently no way to find out if the plugin is installed but is disabled. Navigator.plugins does not contain disabled plugins which are still installed.

Upvotes: 6

phihag
phihag

Reputation: 288090

navigator.plugins is an array, so you'd use for each in modern browsers and iterate with an index otherwise:

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"));

You can not distinguish plugins that are disabled and not present. Bear in mind that you may have to restart your browser before plugin activation / deactivation takes effect.

Upvotes: 1

Delan Azabani
Delan Azabani

Reputation: 81412

If the plugin in question is disabled, it won't appear in navigator.plugins or be otherwise exposed to the page.

Upvotes: 0

Related Questions