Javascript way to list available plugins for IE

无人久伴 提交于 2020-01-12 15:21:09

问题


Is there a quick way to get a list in JavaScript of the available Active X plugins?

I need to do a test to see if a plugin has been installed before I actually try to run it.

In effect I want to create a page that says 'Plugin Installed and properly Working' or have it fail gracefully.

I'm not sure how to have it fail gracefully if the plugin is not available.


回答1:


Just try it.

try {
  var plugin = new ActiveXObject('SomeActiveX');
} catch (e) {
  alert("Error"); // Or some other error code
}



回答2:


The object tag will display whatever is inside it if the object cannot be instantiated:

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

So, graceful failure is built-in and you don't need to use script at all.




回答3:


Maybe this script can help

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

Call it using this for exemple

pluginFound = detectPlugin('Shockwave','Flash');



回答4:


For Internet Explorer 11 you can use navigator.plugins JS API, but you need to add apropriate registrey keys in order for IE11 to detect it:

HKLM\SOFTWARE\Microsoft\Internet Explorer\NavigatorPluginsList

or for 64bit

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

e.g. for plugin with Name "ABC" and mime type "application/abc" :

  • add key HKLM\SOFTWARE\Wow6432\Microsoft\Internet Explorer\NavigatorPluginsList\ABC
  • create subkey for each custom MIME type supported by the plugin, using the MIME type value as the name of the subkey e.g. "application/abc"

Then checking for the plugin existence is done using this code:

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

More on this here: http://msdn.microsoft.com/en-us/library/ie/dn423948(v=vs.85).aspx



来源:https://stackoverflow.com/questions/917148/javascript-way-to-list-available-plugins-for-ie

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!