确定用户的浏览器是否可以查看PDF文件的最佳方法是什么?
理想情况下,它在浏览器或操作系统上无关紧要。
在ASP.NET中有没有特定的方法,或者答案只是JavaScript?
答案 0 :(得分:18)
不,不,不要尝试。
重新dawnerd:插件检测不是正确的答案。我的浏览器中没有安装PDF插件(Ubuntu上的Firefox),但我可以使用操作系统的文档查看器(不是Acrobat Reader)查看PDF文件。
今天,任何可以运行Web浏览器的操作系统都可以开箱即用地查看PDF文件。
如果特定系统没有安装PDF查看器并且浏览器配置为使用它,则可能意味着它是手动安装的Windows,非常精简的备用操作系统,或者非常复古的东西。 / p>
可以合理地假设,在任何这种情况下,用户都会知道PDF文件是什么,并且故意选择不能查看它们或知道如何安装所需的软件。
如果我自欺欺人,我很乐意以错误的方式向我解释。
答案 1 :(得分:3)
快速谷歌搜索found this。适用于各种插件。
答案 2 :(得分:3)
有些用户选择不在浏览器中打开PDF并禁用插件(这允许在浏览器窗口外部的本机应用程序中打开文件)。最好让用户知道软件是否需要打开某些东西(无论是否为PDF),而不是尝试检测插件是否可用。
检测的另一个问题是您需要查找从版本到版本的更改(例如,请参阅:“PDF.PdfCtrl。*”与Adobe PDF查看器的“AcroPDF.PDF。*”)和不同的浏览器实现(例如,前面提到的字符串在IE中使用,而Firefox使用完全不同的检测方式。然后我们需要考虑Opera和Safari以及???)。此外,还有不同的供应商(想想Foxit和Ghostscript,虽然我不确定他们是否为浏览器提供插件),但在检测插件时可能存在差异。
对于2008年编写的脚本以及有关警告的更多信息,请参阅Detecting plugins in Internet Explorer (and a few hints for all the others)。
答案 3 :(得分:2)
在最初忽略了此页面上的建议后,架构师开始进行Acrobat检测,导致不可避免的支持噩梦。
正如ddaa所提到的,并非所有场景都可以通过插件检测准确捕获。例如,某些用户可能选择使用FoxIt Reader而不是acrobat来查看PDF文件。某些用户的浏览器没有标记它们已准备好Acrobat,当然并不总是以相同的方式。
更好的解决方案是让用户选择他们想要查看相关文档的方式。就个人而言,我不喜欢任何网站依赖插件 - 它破坏了网络的美感。