deteccion de plugins con javascript

lvictorp
29 de Septiembre del 2004
necesitaria que alguien me mandara codigo de como detectar plugin de un navegador, he probado con 'navigator.plugins' y solo funciona en netscape pero no en explorer 6.0 porque siempre devuelve el array vacio.gracias

seldon
29 de Septiembre del 2004
has de utilizar VBScript, insertandolo en el codigo de javascript.
Te envio un ejemplo:

<script>
function detectWindowsMedia(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('Windows Media');

// si no se encuentra al plugin se intenta por VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
}

return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

//método de comprobacion válido para cualquier navegador menos MSIE.
function detectPlugin() {

// recoge argumentos del método
var daPlugins = detectPlugin.arguments;
var pluginFound = false;

// si se detectan plugins por javascript
if (navigator.plugins && navigator.plugins.length > 0) {
var pluginsArrayLength = navigator.plugins.length;

// para cada plugin
for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {
var numFound = 0;

//Se compara cada uno de los plugins encontrados con los recibidos por parámetro
for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) {
//La comparación se efectua por nombre o descripción
if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) ||
(navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) {
//plugin encontrado
numFound++;
}
}
// si el plugin encontrado es el último
if(numFound == daPlugins.length) {
pluginFound = true;
break;
}
}
}
return pluginFound;
} // fin de detectPlugin()

// Código VBScript para MSIE Windows.Se definen dos metodos para la busqueda de plug-ins.
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) {
document.writeln('<script language="VBscript">');

//document.writeln('\' A partir de la version 2 de VBScript se puede hacer la detección de plug-ins.');
document.writeln('detectableWithVB = False');
document.writeln('If ScriptEngineMajorVersion >= 2 then');
document.writeln(' detectableWithVB = True');
document.writeln('End If');

//document.writeln('\'esta funcion detecta la mayoria de los plug-ins');
document.writeln('Function detectActiveXControl(activeXControlName)');
document.writeln(' on error resume next');
document.writeln(' detectActiveXControl = False');
document.writeln(' If detectableWithVB Then');
document.writeln(' detectActiveXControl = IsObject(CreateObject(activeXControlName))');
document.writeln(' End If');
document.writeln('End Function');

//document.writeln('\'esta funcion es para el plug-in de QuickTime');
document.writeln('Function detectQuickTimeActiveXControl()');
document.writeln(' on error resume next');
document.writeln(' detectQuickTimeActiveXControl = False');
document.writeln(' If detectableWithVB Then');
document.writeln(' detectQuickTimeActiveXControl = False');
document.writeln(' hasQuickTimeChecker = false');
document.writeln(' Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
document.writeln(' If IsObject(hasQuickTimeChecker) Then');
document.writeln(' If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
document.writeln(' detectQuickTimeActiveXControl = True');
document.writeln(' End If');
document.writeln(' End If');
document.writeln(' End If');
document.writeln('End Function');

//Se cierra así el <script> de VBScript para evitar que se solape con el <script> de javascript
document.writeln('</scr' + 'ipt>');