• 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>
  • 相关阅读:
    接口和抽象类的异同点
    实体对象间传值克隆
    什么是反射&反射的8个类的用法
    ERP中反射的两个实例
    基础02 Java 跨平台原理
    基础01 dos命令
    lists删除
    多字段 java对象排序
    Java对象排序
    MySQL表中数据的迁移
  • 原文地址:https://www.cnblogs.com/mymelody/p/4234355.html
Copyright © 2020-2023  润新知