4

Currently I am working on a web page which will tell user about certain configurations on client machine. Out of this there is also requirement of detecting if Adobe Reader is installed on client machine or not. I am using ASP.NET/C#.

I have looked the following url for the answer "Check Adobe Reader is installed (C#)?" but the code look into the server registry entires where IIS is installed and not the client machine where browser is running.

Is it possible to detect if Adobe reader is installed on client machine and not the server which is hosting the website?

4

2 回答 2

3

请检查下面的脚本,它在 IE、FireFox 和 Chrome 中对我来说很好用

<html>
<body>
<script type="text/javascript">
var found = false;
var info = '';

try 
{    
    acrobat4 = new ActiveXObject('PDF.PdfCtrl.1');    
    if (acrobat4) 
    {      
        found = true;      
        info = 'v. 4.0';    
    }  
}  
catch (e) 
{
    //???
}

if (!found)
{
    try 
    {
        acrobat7 = new ActiveXObject('AcroPDF.PDF.1');
        if (acrobat7) 
        {
            found = true;
            info = 'v. 7+';
        }
    } 
    catch (e) 
    {
        //???
    }

    if (!found && navigator.plugins && navigator.plugins.length>0)
    {
        for (var i = 0; i<navigator.plugins.length; i++) 
        {                           
            if (navigator.plugins[i].name.indexOf('Adobe Acrobat') > -1)
            {
                found = true; 
                info = navigator.plugins[i].description + ' (' + navigator.plugins[i].filename + ')';
                break;
            }
        }
    }
}

document.write("Acrobat Reader Installed : " + found);
document.write("<br />");
if (found) document.write("Info : " + info);
</script>
</body>
</html>

希望这会有所帮助,问候

于 2009-11-11T18:44:11.577 回答
1

我使用了这个脚本并在就绪函数上调用它: 注意:我在这里使用警报只是为了知道如何使用它。

 <script type="text/javascript">
     $(document).ready(function () {
         alert(getAcrobatInfo().browser);
         alert(getAcrobatInfo().acrobat === "installed");
         alert(getAcrobatInfo().acrobatVersion);
     });


     var getAcrobatInfo = function () {

         var getBrowserName = function () {
             return '<%=Session["browser"].ToString()%>';
         };

         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' || getBrowserName().toLocaleLowerCase() == 'internetexplorer') {
                     //
                     // 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') || getWebKitPlugin();
                 }
             }();
         };
         var getWebKitPlugin = function () {
             for (var key in navigator.plugins) {
                 var plugin = navigator.plugins[key];
                 if (plugin.name && plugin.name.substring(0, 6) == "WebKit" && (plugin.name.indexOf("pdf") != -1 || plugin.name.indexOf("PDF") != -1)) return plugin;
             }
         };
         var isAcrobatInstalled = function () {
             return !!getPDFPlugin();
         };
         var getAcrobatVersion = function () {
             try {
                 var plugin = getPDFPlugin();

                 if (getBrowserName() == 'ie' || getBrowserName().toLocaleLowerCase() == 'internetexplorer') {
                     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()
         };
     };
</script>

还要在后面添加此代码:

  public void detectBrowser()
     { //Set the Browser session variable
       System.Web.HttpBrowserCapabilities browser = Request.Browser;
       Session["Browser"] = browser.Browser;
    }

希望能帮助到你。

于 2015-02-03T08:03:04.773 回答