Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript检测是否安装了Adobe Reader_Javascript_Pdf_Adobe_Acrobat_Browser Plugin - Fatal编程技术网

Javascript检测是否安装了Adobe Reader

Javascript检测是否安装了Adobe Reader,javascript,pdf,adobe,acrobat,browser-plugin,Javascript,Pdf,Adobe,Acrobat,Browser Plugin,我们有一些PDF表单无法在非Adobe PDF阅读器中正确显示(即WebKit的内置PDF阅读器无法正确显示某些Adobe专有内容)。我们想检测用户何时没有安装Adobe的PDF阅读器,并给他们一点警告,但我很难在2014年弄清楚如何安装 它似乎在2011年起了作用。基本上,它通过navigator.plugins循环查找名为adobeacrobat或chromepdfviewer的插件 for(key in navigator.plugins) { var plugin = na

我们有一些PDF表单无法在非Adobe PDF阅读器中正确显示(即WebKit的内置PDF阅读器无法正确显示某些Adobe专有内容)。我们想检测用户何时没有安装Adobe的PDF阅读器,并给他们一点警告,但我很难在2014年弄清楚如何安装

它似乎在2011年起了作用。基本上,它通过
navigator.plugins
循环查找名为
adobeacrobat
chromepdfviewer
的插件

 for(key in navigator.plugins) {
      var plugin = navigator.plugins[key];
      if(plugin.name == "Adobe Acrobat") return plugin;
 }

快闪到今天,Adobe肯定做了一些改变,因为我安装了AdobeAcrobat,但它似乎不在
navigator.plugins
!它现在在哪里?如何检测它?

好的,我已经更新了脚本,现在它在所有浏览器中都工作得非常好:

<!DOCTYPE HTML>
<html>
    <head>
        <title> New Document </title>
        <script>
        //
        // http://thecodeabode.blogspot.com
        // @author: Ben Kitzelman
        // @license: FreeBSD: (http://opensource.org/licenses/BSD-2-Clause) Do whatever you like with it
        // @updated: 03-03-2013
        //
        var getAcrobatInfo = function() {

            var getBrowserName = function() {
                return this.name = this.name || function() {
                    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 || navigator.appVersion.indexOf('Trident/') > 0){
                        return "ie";
                    } else if(userAgent.indexOf("firefox") > -1){
                        return "firefox";
                    } else {
                        //return "ie";
                        return userAgent;
                    }
                }();
            };

            var getActiveXObject = function(name) {
                try { return new ActiveXObject(name); } catch(e) {}
            };

            var getNavigatorPlugin = function(name) {
                for(key in navigator.plugins) {
                    var plugin = navigator.plugins[key];
                    if(plugin.name == name) return plugin;
                }
            };

            var getPDFPlugin = function() {
                return this.plugin = this.plugin || function() {
                    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');
                    }
                }();
            };

            var isAcrobatInstalled = function() {
                return !!getPDFPlugin();
            };

            var getAcrobatVersion = function() {
                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;
                }
            }

            //
            // The returned object
            //
            return {
                browser: getBrowserName(),
                acrobat: isAcrobatInstalled() ? 'installed' : false,
                acrobatVersion: getAcrobatVersion()
            };
        };

        var info = getAcrobatInfo();
        alert(info.browser+ " " + info.acrobat + " " + info.acrobatVersion);
  </script>
 </head>

 <body>

 </body>
</html>

新文件
//
// http://thecodeabode.blogspot.com
//@作者:本·基泽尔曼
//@license:FreeBSD:(http://opensource.org/licenses/BSD-2-Clause)你喜欢怎么做就怎么做
//@更新日期:03-03-2013
//
var getAcrobatInfo=函数(){
var getBrowserName=函数(){
返回this.name=this.name | | function(){
var userAgent=navigator?navigator.userAgent.toLowerCase():“其他”;
if(userAgent.indexOf(“chrome”)>-1){
返回“chrome”;
}else if(userAgent.indexOf(“safari”)>-1){
返回“safari”;
}else if(userAgent.indexOf(“msie”)>-1 | | navigator.appVersion.indexOf(“Trident/”)>0){
返回“ie”;
}else if(userAgent.indexOf(“firefox”)>-1){
返回“firefox”;
}否则{
//返回“ie”;
返回用户代理;
}
}();
};
var getActiveXObject=函数(名称){
请尝试{返回新的ActiveXObject(名称);}捕获(e){}
};
var getNavigatorPlugin=函数(名称){
for(输入navigator.plugins){
var plugin=navigator.plugins[key];
如果(plugin.name==name)返回plugin;
}
};
var getPDFPlugin=函数(){
返回this.plugin=this.plugin | |函数(){
如果(getBrowserName()=='ie'){
//
//加载activeX控件
//AcroPDF.PDF由版本7及更高版本使用
//PDF.PdfCtrl由版本6和更早版本使用
返回getActiveXObject('AcroPDF.PDF')| | getActiveXObject('PDF.PdfCtrl');
}否则{
返回getNavigatorPlugin('Adobe Acrobat')| | getNavigatorPlugin('Chrome PDF Viewer')| | getNavigatorPlugin('WebKit内置PDF');
}
}();
};
var isAcrobatInstalled=函数(){
return!!getPDFPlugin();
};
var getAcrobatVersion=函数(){
试一试{
var plugin=getPDFPlugin();
如果(getBrowserName()=='ie'){
var versions=plugin.GetVersions().split(',');
var-latest=versions[0]。拆分('=');
返回(最新[1]);
}
if(plugin.version)返回parseInt(plugin.version);
返回plugin.name
}
捕获(e){
返回null;
}
}
//
//返回的对象
//
返回{
浏览器:getBrowserName(),
acrobat:isAcrobatInstalled()?“已安装”:false,
acrobatVersion:getAcrobatVersion()
};
};
var info=getAcrobatInfo();
警报(信息浏览器+“”+info.acrobat+“”+info.acrobat版本);

我已经在这里测试了该脚本,它在Firefox和Chrome中都运行良好。但是IE似乎不喜欢它。你有旧版本的
AdobeReader
?它甚至没有出现在我电脑的插件列表中。我正在为IE开发它。脚本似乎没有检测到IE浏览器。哦,我有Adobe Reader席安SaleLead-感谢——在非探险家的前面,我发现Adobe没有安装AcroBAT到Chrome,它在Firefox中运行,但是脚本没有检测到它,因为它正在做<代码>(插件。name = name)< /C> >,但是因为名称是“代码> Adobe AcROAT-NAPAPI插件,版本110.09< /代码>,那是假的。该行可能应该更改为
if(plugin.name.indexOf(name)>-1)
。我仍然不知道为什么插件不在Chrome中。我从来没有在Chrome或AdobeReader中做过任何奇怪的事情,上面的脚本在Chrome中检测到它。所以我觉得很奇怪,它对你不起作用。啊,我以为不仅仅是我,因为办公室里的其他人都有同样的结果。我们一定对Chrome做了同样奇怪的事情!Ghehe,那可能是xD,但不幸的是,我无法修复这里没有损坏的东西。我无法重现你的问题。所以恐怕你只能靠自己了。