【发布时间】:2011-08-04 04:27:55
【问题描述】:
有没有办法检查用户是否安装了 PDF 阅读器? 也许有一个 ActiveX 组件?
你能帮帮我吗?
【问题讨论】:
-
非常仔细地考虑为什么你想要检测这个以及你想要完成什么。人们可以在没有安装插件的情况下阅读 PDF 文件。
标签: pdf browser internet-explorer-8
有没有办法检查用户是否安装了 PDF 阅读器? 也许有一个 ActiveX 组件?
你能帮帮我吗?
【问题讨论】:
标签: pdf browser internet-explorer-8
您可以使用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 函数的参数的确切名称。
我希望这会对你有所帮助。顺便说一句,我没有在浏览器中尝试过代码,这是我的理论知识。但我想这会对你有所帮助-希望- :-)
【讨论】:
不,我不这么认为 - 但默认情况下,您始终可以通过 Google 的 PDF 阅读器引导您的链接 - 这对所有人都有效。
请注意,这将通过 Google 的服务器引导您的 PDF 文件,因此您将失去安全因素。
【讨论】:
【讨论】: