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>