Javascript detection if Adobe Reader is installed

We have some forms of PDF that do not display correctly in readers that are not related to Adobe PDF (i.e., the built-in PDF reader WebKit does not allow displaying some Adobe branded items). We want to detect when users do not have Adobe Reader Reader, and give them a small warning, but it’s hard for me to figure out how to do this in 2014.

This script seems to have worked in 2011. Basically, it goes through navigator.plugins and looks for plugins called Adobe Acrobat or Chrome PDF Viewer .

  for(key in navigator.plugins) { var plugin = navigator.plugins[key]; if(plugin.name == "Adobe Acrobat") return plugin; } 

Scroll forward to this day, Adobe must have changed something because I have Adobe Acrobat installed, but it doesn't seem to be in navigator.plugins ! Where is it now and how to find it?

+5
source share
1 answer

Ok, I updated the script and now it works fine in all browsers:

 <!DOCTYPE HTML> <html> <head> <title> New Document </title> <script> // // http://thecodeabode.blogspot.com // @author: Ben Kitzelman // @license: FreeBSD: (http://opensource.org/licenses/BSD-2-Clause) Do whatever you like with it // @updated: 03-03-2013 // var getAcrobatInfo = function() { var getBrowserName = function() { return this.name = this.name || function() { var userAgent = navigator ? navigator.userAgent.toLowerCase() : "other"; if(userAgent.indexOf("chrome") > -1){ return "chrome"; } else if(userAgent.indexOf("safari") > -1){ return "safari"; } else if(userAgent.indexOf("msie") > -1 || navigator.appVersion.indexOf('Trident/') > 0){ return "ie"; } else if(userAgent.indexOf("firefox") > -1){ return "firefox"; } else { //return "ie"; return userAgent; } }(); }; var getActiveXObject = function(name) { try { return new ActiveXObject(name); } catch(e) {} }; var getNavigatorPlugin = function(name) { for(key in navigator.plugins) { var plugin = navigator.plugins[key]; if(plugin.name == name) return plugin; } }; var getPDFPlugin = function() { return this.plugin = this.plugin || function() { if(getBrowserName() == 'ie') { // // load the activeX control // AcroPDF.PDF is used by version 7 and later // PDF.PdfCtrl is used by version 6 and earlier return getActiveXObject('AcroPDF.PDF') || getActiveXObject('PDF.PdfCtrl'); } else { return getNavigatorPlugin('Adobe Acrobat') || getNavigatorPlugin('Chrome PDF Viewer') || getNavigatorPlugin('WebKit built-in PDF'); } }(); }; var isAcrobatInstalled = function() { return !!getPDFPlugin(); }; var getAcrobatVersion = function() { try { var plugin = getPDFPlugin(); if(getBrowserName() == 'ie') { var versions = plugin.GetVersions().split(','); var latest = versions[0].split('='); return parseFloat(latest[1]); } if(plugin.version) return parseInt(plugin.version); return plugin.name } catch(e) { return null; } } // // The returned object // return { browser: getBrowserName(), acrobat: isAcrobatInstalled() ? 'installed' : false, acrobatVersion: getAcrobatVersion() }; }; var info = getAcrobatInfo(); alert(info.browser+ " " + info.acrobat + " " + info.acrobatVersion); </script> </head> <body> </body> </html> 
+10
source

Source: https://habr.com/ru/post/1206276/


All Articles