2011-04-12 13 views
5

¿Hay alguna manera de verificar si el usuario ha instalado un lector de PDF? ¿Quizás con un componente ActiveX?Webbrowser, detectar si hay un lector de PDF instalado?

¿Podría ayudarme?

+4

Piensa detenidamente sobre * por qué * quieres detectar esto y lo que estás tratando de lograr. La gente puede leer archivos PDF sin un complemento instalado. –

Respuesta

3

Puede detectar los complementos instalados con window.navigator.plugins Esto devolverá una matriz con detalles de los complementos instalados, pero esto no funcionará para Internet Explorer. Al ejecutar este código, IE solo devuelve una matriz con etiquetas incrustadas en la página. Gracias IE, ¿tan útil?

Ok, intentemos resolver esto. La siguiente función debería funcionar en todos los principales navegadores esperan IE.

 
function hasPlugin(name) { 
    name = name.toLowerCase(); 
    var plugins = window.navigator.plugins; 
    for (var i=0, len = plugins.length; i -1) { 
      return true; 
     } 
    } 
    return false; 
} 

puede llamar a esta función y comprobar el estado de complemento como esto

 
hasPlugin('Flash'); 
hasPlugin('QuickTime'); 

Para IE, debemos tratar este

 
function hasPlugin(name) { 
    try { 
     new ActiveXObject(name); 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 

puede llamar a esta función y comprobar el estado de plug-in para IE

 
hasPlugin('ShockwaveFlash.ShockwaveFlash'); 

Usted puede hecho esta función navegadores declaración como esta

 
var hasPlugin; 
if (navigator.userAgent.indexOf('MSIE')) { 
    hasPlugin = function(name) { 
     try { 
      new ActiveXObject(name); 
      return true; 
     } catch (e) { 
      return false; 
     } 
    } 
} 
else { 
    hasPlugin = function(name) { 
     name = name.toLowerCase(); 
     var plugins = window.navigator.plugins; 
     for (var i=0, len = plugins.length; i -1) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

A continuación, puede llamar a la función de una manera transversal navegador. Lo siento, no instalé ningún complemento de PDF para mis navegadores, Firefox, Chrome o IE, así podría decir el nombre exacto del argumento que deberíamos pasar tiene la función de Plugin.

Espero que esto te ayude. Por cierto, no probé el código en los navegadores, este es un conocimiento teórico sobre mí. Pero supongo que esto le ayudará a -hope- :-)

+1

¿Cómo esta respuesta puede ser la respuesta correcta? la función tienePlugin devolverá verdadero en cualquier caso. –

+1

Debe haber un error tipográfico o de sintaxis que StackOverflow está consumiendo. –

4

No, no lo creo, pero siempre puedes dirigir tus enlaces a través del lector de PDF de Google de forma predeterminada, lo que funcionará para todos.

http://docs.google.com/viewer

Por favor, tenga en cuenta que esto va a canalizar sus archivos PDF a través de los servidores de Google, por lo que perderá un elemento de seguridad.

+0

Por favor, piense detenidamente sobre la protección de datos. Si su usuario ha subido un documento a su sitio, ¿están al tanto de que Google está procesando (y por lo tanto probablemente también almacenado) el documento? – freefaller

+0

Ese es un buen punto @freefaller: lo agregaré a la respuesta para ayudar a otros a entender esto. –

Cuestiones relacionadas