当前位置:  开发笔记 > 编程语言 > 正文

如果安装了特定应用程序,则从浏览器中检测

如何解决《如果安装了特定应用程序,则从浏览器中检测》经验,为你挑选了2个好方法。

我们有一个高级网页(ASP.NET,C#),以及需要在客户端计算机上安装的应用程序,以便充分利用网页.该应用程序是一个托盘应用程序,主要有两个任务.检测网络服务器上发生某些事件的时间(例如邀请参加会议或通知即将举行的会议).trayapp的另一个任务是使用自定义协议(trayapp://)来执行一些ajax调用回服务器.

我们遇到的一个问题是如何确定应用程序是否安装在本地计算机上.现在,用户必须勾选一个复选框以通知网站应用程序已安装,并且可以安全地调用trayapp:// url调用.

有没有办法,例如通过JavaScript或类似方法来检测我们的应用程序是否安装在本地计算机上?

该检查需要适用于IE,FF和Opera浏览器.



1> JohnFx..:

安装客户端应用程序时,您可以修改浏览器配置以在HTTP请求中包含另一个请求标头,然后让服务器代码查找该标头,例如使用以下注册表项作为支持的mime类型(对于Internet Explorer)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
                                                      Internet Settings\Accepted Documents

我不确定Opera和FF是否使用相同的密钥,但它们可能有类似的配置选项,但这至少应该让你走上正轨.



2> some..:

如果你想在浏览器中使用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

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有