JS检测浏览器Adobe Reader插件

  Web应用中当我们希望向用户显示pdf文档时候,如果用户安装了Adobe Reader之类的pdf阅读器,就可以直接打开文档在浏览器中显示,

但是,当用户没有安装这类软件的时候,自然是打不开的,为了系统或者网站的易用性,最好在展示文档之前对客户端进行检测,如果已经安装

这类阅读器就直接显示,如果没有安装则跳转到Adobe Reader之类的阅读软件的下载页面或者直接给用户下载地址,提示用户进行下载安装。

我们可以通过JavaScript先进行检测,然后根据检测结果进行指定的跳转。如果是像火狐、谷歌这类浏览器很好处理,可是IE浏览器则总会遇到

各种问题,通过搜多资料和测试终于解决了各种版本以及不同浏览器的问题,下面就是相应的JavaScript代码。

 1 <script type="text/javascript">
 2 
 3   //检测浏览器类型:IE、火狐、谷歌、Safari
 4 
 5   function getBrowserName(){
 6   var userAgent = navigator ? navigator.userAgent.toLowerCase() : "other";
 7   if(userAgent.indexOf("chrome") > -1) return "chrome";
 8   else if(userAgent.indexOf("safari") > -1) return "safari";
 9   else if(userAgent.indexOf("msie") > -1 || userAgent.indexOf("trident") > -1) return "ie";
10   else if(userAgent.indexOf("firefox") > -1) return "firefox";
11   return userAgent;
12   }
13 
14   //针对IE返回ActiveXObject
15   function getActiveXObject (name){
16   try {
17   return new ActiveXObject(name);
18   } catch(e) {
19   }
20   }
21 
22   //针对除了IE之外浏览器
23   function getNavigatorPlugin (name){
24   for(key in navigator.plugins) {
25   var plugin = navigator.plugins[key];
26   if(plugin.name == name) return plugin;
27   }
28   }
29 
30   //获取Adobe Reader插件信息
31   function getPDFPlugin(){
32   if(getBrowserName() == 'ie') {
33   //
34   // load the activeX control
35   // AcroPDF.PDF is used by version 7 and later
36   // PDF.PdfCtrl is used by version 6 and earlier
37   return getActiveXObject('AcroPDF.PDF') || getActiveXObject('PDF.PdfCtrl');
38   }
39   else {
40   return getNavigatorPlugin('Adobe Acrobat') || getNavigatorPlugin('Chrome PDF Viewer') || getNavigatorPlugin('WebKit built-in PDF');
41   }
42   }
43 
44       //判断插件是否安装
45   function isAcrobatInstalled(){
46   return !!getPDFPlugin();
47   }
48   function getAcrobatVersion(){
49   try {
50   var plugin = getPDFPlugin();
51   if(getBrowserName() == 'ie') {
52   var versions = plugin.GetVersions().split(',');
53   var latest = versions[0].split('=');
54   return parseFloat(latest[1]);
55   }
56   if(plugin.version) return parseInt(plugin.version);
57   return plugin.name;
58   }
59   catch(e) {
60   return null;
61   }
62   }
63 
64   //插件安装了,则跳转到指定页面
65   if(isAcrobatInstalled){
66     window.location.href="";
67   }else{
68 
69      //检测到未安装阅读器,则提示用户下载
70   alert("你可能还没有安装pdf阅读器,为了方便你查看pdf文档,请下载安装!");
71     window.location.href="http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.3/chs/AdbeRdr930_zh_CN.exe";
72   }
73 </script>
原文地址:https://www.cnblogs.com/mymelody/p/4234355.html