Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
16
rated 0 times [  23] [ 7]  / answers: 1 / hits: 6018  / 11 Years ago, fri, january 31, 2014, 12:00:00

I am trying to detect the Adobe Reader plugin for IE11, but for some reason it always returns null. I am lead to believe it is because IE11 doesn't use the same plugin name as older versions of Internet Explorer, but I am not sure.



I got my code directly from this site (a user from this website!): http://thecodeabode.blogspot.com/2011/01/detect-adobe-reader-plugin.html



The code works brilliantly until IE11 on Windows 7, where it returns null in getAcrobatVersion.



Here is the full code so it's easier for you all:



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) return ie;
else if(userAgent.indexOf(firefox) > -1) return firefox;
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();
if(info.acrobat){
//IE11 will return false even if you have adobe reader because it's a terrible browser.
document.write('<img src=img/sysChkErr.gif alt= border=0>');
document.write('<span style=color: ' + errCol + '><strong>Not Installed</strong></span>');
document.write('<br /><br />Some of our applications require Adobe Reader. You can download Adobe Reader ');
document.write('<a href=http://get.adobe.com/reader/ target=_blank>here</a>.');
}else{
document.write('<img src=img/sysChkPas.gif alt= border=0>');
document.write('<span style=color: ' + pasCol + '><strong>Installed</strong></span>');
document.write('<br /><br />Version ' + info.acrobatVersion + ' is installed.');
}

More From » detect

 Answers
3

if(userAgent.indexOf(msie) > -1) will no longer do the job in IE11 because the user agent string has changed. For IE11, you have to look for Trident.



MediaElement.js worked around this like so:



t.isIE = (nav.appName.match(/microsoft/gi) !== null) || (ua.match(/trident/gi) !== null);


So I guess this might do the trick for you?



  else if(userAgent.indexOf(msie) > -1 || userAgent.indexOf(trident) > -1)  return ie;

[#48177] Thursday, January 30, 2014, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
donovanjasek

Total Points: 465
Total Questions: 103
Total Answers: 113

Location: Saint Vincent and the Grenadines
Member since Thu, Oct 15, 2020
4 Years ago
;