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

Webbrowser,检测是否安装了PDF阅读器?,pdf,browser,internet-explorer-8,Pdf,Browser,Internet Explorer 8,有没有办法检查用户是否安装了PDF阅读器? 也许有ActiveX组件 你能帮帮我吗?不,我不这么认为,但默认情况下,你可以通过谷歌的PDF阅读器直接链接,这对每个人都适用 请注意,这将通过Google的服务器引导您的PDF文件,因此您将失去安全性。您可以使用window.navigator.plugins来检测已安装的插件 这将返回一个包含已安装插件详细信息的数组,但这不适用于Internet Explorer。运行此代码时,IE仅返回页面中带有嵌入标记的数组。谢谢你,这么有用吗 好的,让我们

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


你能帮帮我吗?

不,我不这么认为,但默认情况下,你可以通过谷歌的PDF阅读器直接链接,这对每个人都适用


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

您可以使用
window.navigator.plugins来检测已安装的插件
这将返回一个包含已安装插件详细信息的数组,但这不适用于Internet Explorer。运行此代码时,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;
}
对于IE,我们应该试试这个

function hasPlugin(name) {
    try {
        new ActiveXObject(name);
        return true;
    } catch (e) {
        return false;
    }
}
您可以调用此函数并检查IE的插件状态

hasPlugin('ShockwaveFlash.ShockwaveFlash');
您可以像这样跨浏览器声明此函数

hasPlugin('Flash');
hasPlugin('QuickTime');
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;
    }
}
var插件;
if(navigator.userAgent.indexOf('MSIE')){
hasPlugin=函数(名称){
试一试{
新的ActiveXObject(名称);
返回true;
}捕获(e){
返回false;
}
}
}
否则{
hasPlugin=函数(名称){
name=name.toLowerCase();
var plugins=window.navigator.plugins;
for(var i=0,len=plugins.length;i-1){
返回true;
}
}
返回false;
}
}
然后,您可以通过跨浏览器的方式调用该函数。很抱歉,我没有为我的浏览器安装任何PDF插件——Firefox、Chrome或IE——因此我可以告诉您我们应该传递hasPlugin函数的参数的确切名称


我希望,这会对你有所帮助。顺便说一句,我没有在浏览器中尝试这些代码,这对我来说是一种社会学知识。但是我想这会帮助你-希望-:-)

这对我很有用:


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

仔细考虑为什么要检测到这一点,以及您试图实现的目标。人们可以在没有安装插件的情况下阅读PDF文件。这个答案怎么可能是正确答案?函数hasPlugin在任何情况下都将返回true。StackOverflow正在吞噬的一定是打字错误或语法错误。请仔细考虑数据保护。如果您的用户已将文档上传到您的网站,他们是否知道该文档正在被谷歌处理(因此可能也被存储)?这是一个很好的观点@freefaller-我会将其添加到答案中,以帮助其他人理解这一点。