Web浏览器,检测是否安装了PDF阅读器?

时间:2011-04-12 19:46:50

标签: pdf browser internet-explorer-8

有没有办法检查用户是否安装了PDF阅读器? 也许使用ActiveX组件?

你能帮我吗?

3 个答案:

答案 0 :(得分:4)

不,我不这么认为 - 但您可以随时通过Google的PDF阅读器指导您的链接 - 这对每个人都有效。

http://docs.google.com/viewer

请注意,这会通过Google的服务器引导您的PDF文件,因此您将失去安全性。

答案 1 :(得分:3)

您可以使用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;
    }
}

然后您可以以跨浏览器方式调用该函数。对不起,我没有为我的浏览器安装任何PDF插件,-Firefox,Chrome或IE-所以我可以告诉你我们应该通过hasPlugin函数的参数的确切名称。

我希望,这会对你有所帮助。顺便说一下,我没有尝试过浏览器中的代码,这对我来说是一个很好的知识。但我想这会对你有所帮助-hope-: - )

答案 2 :(得分:1)

这对我非常有用:

Java script - Adobe plug-in detector

从评论区域,也可以获得Safari浏览器的更正。