2009-08-04 4 views
3

J'utilise un IFrame pour afficher un document Pdf lorsqu'un utilisateur clique sur un lien dans ce IFrame. Cependant, sur les machines sans lecteur, le lien vous invitera à télécharger. Y at-il un moyen, que le même lien peut inciter l'utilisateur à télécharger un lecteur lorsqu'il ne détecte pas de lecteur à la place? Je pensais avoir vu ça quelque part. Merci!Détecter le lecteur PDF dans MsIE

+2

Vous devez également prendre en compte le fait que de nombreux utilisateurs (y compris moi-même) désactivent l'intégration du navigateur avec leur lecteur PDF. – Bryan

+1

Dans MsIE 7, comment choisir de désactiver l'intégration du navigateur avec un lecteur PDF? –

+3

+1 pour désactiver les lecteurs de pdf dans le navigateur ennuyeux! –

Répondre

5

Cela fonctionne pour moi dans IE:

<script> 
var p; 
try { 
p = new ActiveXObject('AcroExch.Document'); 
} 
catch (e) { 
// active x object could not be created 
document.write('doesnt look like the PDF plugin is installed...'); 
} 
if (p) { 
    document.write('does look like the pdf plugin is installed!'); 
} 
</script> 

Found it here. ..mais modifié pour supprimer la « endif »

+0

Cependant brut avec beaucoup de drapeaux activeX avec MsIE, cela semblait être le travail. –

+0

y a-t-il une détection de jquery de navigateur croisé? –

1

En JavaScript, pouvez-vous faire quelque chose comme:

var adobePdfObject = new ActiveXObject("theAdobePdfCOMObject"); 

puis soit attraper une erreur de défaillance ou de la valeur de retour de adobePdfObject?

3

Here are a few scripts qui aident à détecter la présence d'Acrobat.

+0

Cela semble être l'approche la plus complète, mais je me bats encore pour la faire fonctionner. Toute alimentation à la cuillère serait la plus appréciée. Je suis intéressé par le http://dithered.chadlindstrom.ca/javascript/acrobat_redirect/index.html –

+0

Pourriez-vous fournir quelques informations sur comment cela fonctionne? J'ai l'impression que fournir un lien sans explication vaut mieux que rien, mais laisse toujours à désirer. – nont

+0

J'ai implémenté les scripts sur quelques sites sans problèmes. Et je ne vois pas la nécessité de répliquer les informations du site ici lorsque tous les détails pertinents sont disponibles sur le site. – Jim

3

Je sais que cette question avait été déjà répondu, mais j'avais récemment pour construire une fonction qui détecte la présence de plug-in PDF sur différents navigateurs. C'est ce que j'ai. J'espère que si ça aide.

function hasPdfPlugin() { 
//detect in mimeTypes array 
if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0) {   
    for (i = 0; i < navigator.mimeTypes.length; i++) { 
     var mtype = navigator.mimeTypes[i]; 
     if(mtype.type == "application/pdf" && mtype.enabledPlugin) 
      return true; 
    } 
} 

//detect in plugins array 
if (navigator.plugins != null && navigator.plugins.length > 0) { 
    for (i = 0; i < navigator.plugins.length; i++) { 
     var plugin = navigator.plugins[i]; 
     if (plugin.name.indexOf("Adobe Acrobat") > -1 
       || plugin.name.indexOf("Adobe Reader") > -1) { 
      return true; 
     } 

    } 
} 
// detect IE plugin 
if (window.ActiveXObject) { 
    // check for presence of newer object  
    try { 
     var oAcro7 = new ActiveXObject('AcroPDF.PDF.1'); 
     if (oAcro7) { 
      return true; 
     } 
    } catch (e) { 
    } 

    // iterate through version and attempt to create object 
    for (x = 1; x < 10; x++) { 
     try { 
      var oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');"); 
      if (oAcro) { 
       return true; 
      } 
     } catch (e) { 
     } 
    } 

    // check if you can create a generic acrobat document 
    try { 
     var p = new ActiveXObject('AcroExch.Document'); 
     if (p) { 
      return true; 
     } 
    } catch (e) { 
    } 

} 

// Can't detect in all other cases 
return false; 
} 
+0

Excellent, travaillé parfaitement sur IE8 et Firefox 7. –

Questions connexes