标签:
Web应用中当我们希望向用户显示pdf文档时候,如果用户安装了Adobe Reader之类的pdf阅读器,就可以直接打开文档在浏览器中显示,
但是,当用户没有安装这类软件的时候,自然是打不开的,为了系统或者网站的易用性,最好在展示文档之前对客户端进行检测,如果已经安装
这类阅读器就直接显示,如果没有安装则跳转到Adobe Reader之类的阅读软件的下载页面或者直接给用户下载地址,提示用户进行下载安装。
我们可以通过JavaScript先进行检测,然后根据检测结果进行指定的跳转。如果是像火狐、谷歌这类浏览器很好处理,可是IE浏览器则总会遇到
各种问题,通过搜多资料和测试终于解决了各种版本以及不同浏览器的问题,下面就是相应的JavaScript代码。
<script type="text/javascript">
//检测浏览器类型:IE、火狐、谷歌、Safari
function getBrowserName(){
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 || userAgent.indexOf("trident") > -1) return "ie";
else if(userAgent.indexOf("firefox") > -1) return "firefox";
return userAgent;
}
//针对IE返回ActiveXObject
function getActiveXObject (name){
try {
return new ActiveXObject(name);
} catch(e) {
}
}
//针对除了IE之外浏览器
function getNavigatorPlugin (name){
for(key in navigator.plugins) {
var plugin = navigator.plugins[key];
if(plugin.name == name) return plugin;
}
}
//获取Adobe Reader插件信息
function getPDFPlugin(){
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‘);
}
}
//判断插件是否安装
function isAcrobatInstalled(){
return !!getPDFPlugin();
}
function getAcrobatVersion(){
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;
}
}
//插件安装了,则跳转到指定页面
if(isAcrobatInstalled){
window.location.href="";
}else{
//检测到未安装阅读器,则提示用户下载
alert("你可能还没有安装pdf阅读器,为了方便你查看pdf文档,请下载安装!");
window.location.href="http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.3/chs/AdbeRdr930_zh_CN.exe";
}
</script>
标签:
原文地址:http://www.cnblogs.com/mymelody/p/4234355.html