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>