Webbrowser,检测是否安装了PDF阅读器?

问题描述

| 有没有一种方法可以检查用户是否已安装PDF阅读器? 也许带有ActiveX组件? 请你帮助我好吗?     

解决方法

您可以使用
window.navigator.plugins
检测已安装的插件 这将返回一个包含已安装插件详细信息的数组,但是不适用于Internet Explorer。运行此代码时,IE仅返回页面中带有嵌入标签的数组。谢谢IE,那么有用吗? 好的,让我们尝试解决这个问题。以下功能应该在所有主要的IE浏览器中都可以使用。
function hasPlugin(name) {
    name = name.toLowerCase();
    var plugins = window.navigator.plugins;
    for (var i=0,len = plugins.length; i < len; i++) {
        if (plugins[i].name.toLowerCase().indexOf(name) > -1) {
            return true;
        }
    }
    return false;
}
您可以调用此函数并按如下方式检查插件状态
hasPlugin(\'Flash\');
hasPlugin(\'QuickTime\');
对于IE,我们应该尝试一下
function hasPlugin(name) {
    try {
        new ActiveXObject(name);
        return true;
    } catch (e) {
        return false;
    }
}
您可以调用此函数并检查IE的插件状态
hasPlugin(\'ShockwaveFlash.ShockwaveFlash\');
您可以像这样跨浏览器进行此函数声明
var hasPlugin;
if (navigator.userAgent.indexOf(\'MSIE\')) {
    hasPlugin = function(name) {
        try {
            new ActiveXObject(name);
            return true;
        } catch (e) {
            return false;
        }
    }
}
else {
    hasPlugin = function(name) {
        name = name.toLowerCase();
        var plugins = window.navigator.plugins;
        for (var i=0,len = plugins.length; i < len; i++) {
            if (plugins[i].name.toLowerCase().indexOf(name) > -1) {
                return true;
            }
        }
        return false;
    }
}
然后,您可以通过跨浏览器方式调用该函数。抱歉,我没有为我的浏览器-Firefox,Chrome或IE-安装任何PDF插件,所以我可以告诉您确切的名称我们应该传递hasPlugin函数的参数。 我希望这能帮到您。顺便说一句,我没有在浏览器中尝试过该代码,这对我来说是一种理论知识。但是我想这会帮助您-希望-:-)     ,不,我不这么认为-但您始终可以默认通过Google的PDF阅读器定向链接-这对每个人都有效。 http://docs.google.com/viewer 请注意,这将通过Google的服务器引导您的PDF文件,因此您将失去安全性。     ,这对我非常有用: Java脚本-Adobe插件检测器 在评论区域中,也可以获取Safari浏览器的更正。