我们有一个高级网页(ASP.NET,C#),以及需要在客户端计算机上安装的应用程序,以便充分利用网页.该应用程序是一个托盘应用程序,主要有两个任务.检测网络服务器上发生某些事件的时间(例如邀请参加会议或通知即将举行的会议).trayapp的另一个任务是使用自定义协议(trayapp://)来执行一些ajax调用回服务器.
我们遇到的一个问题是如何确定应用程序是否安装在本地计算机上.现在,用户必须勾选一个复选框以通知网站应用程序已安装,并且可以安全地调用trayapp:// url调用.
有没有办法,例如通过JavaScript或类似方法来检测我们的应用程序是否安装在本地计算机上?
该检查需要适用于IE,FF和Opera浏览器.
安装客户端应用程序时,您可以修改浏览器配置以在HTTP请求中包含另一个请求标头,然后让服务器代码查找该标头,例如使用以下注册表项作为支持的mime类型(对于Internet Explorer)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Internet Settings\Accepted Documents
我不确定Opera和FF是否使用相同的密钥,但它们可能有类似的配置选项,但这至少应该让你走上正轨.
如果你想在浏览器中使用javascript进行检测,你可以使用集合"navigator.plugins".它适用于Firefox,Opera和Chrome,但遗憾的是不适用于IE.
更新:在FF,Opera和Chrome中,您可以像这样轻松测试:
if (navigator.plugins["Adobe Acrobat"]) { // do some stuff if it is installed } else { // do some other stuff if its not installed }
更新#2:如果它是IE中的ActiveX对象,您可以使用以下内容测试它是否存在:
function getActiveXObject(name){ try{ return new ActiveXObject(name); } catch(err){ return undefined; } };
IE的另一种方法类似于JohnFx建议的方法(我在这里找到它并且没有测试它):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Internet Settings\User Agent\Post Platform