url protocol 调用本地程序如何判断是否安装

ljldashen 2019-08-06 10:34:57
如题,因业务需求,要在页面检测用户是安装插件,调用插件的方法是url protocol,但这里面存在一个检测安装的问题,该插件只需安装一次,如果没有安装的话提示用户按照指定流程安装,在其它浏览器都正常,但IE浏览器会因为找不到URL协议在注册表注册的值跳转到以下页面,导致原本用于显示安装教程的页面被覆盖了,如下图

原本如果调用的插件程序没有启动的话,会在页面内显示教程,其它浏览器是正常的,但是IE会有调用失败的提示,如何截获这个提示?又或者说有没有其它方法可以检测插件是否安装?
...全文
711 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2019-08-08
  • 打赏
  • 举报
回复
看了一下,基本也就那样。搞了隐藏frame,用url访问,然后判定状态 只不过,根据浏览器有不同的东西,大体喵了一下,有的浏览器有NS_ERROR_UNKNOWN_PROTOCOL,有的没有搞了个定时器超时 基本上已经不玩这些了,就不具体深入研究了
wanghui0380 2019-08-08
  • 打赏
  • 举报
回复 1
来把,下班前最后5分钟,帮你找找 https://github.com/ismailhabib/custom-protocol-detection
ljldashen 2019-08-08
  • 打赏
  • 举报
回复
引用 9 楼 maomaobaobaobao 的回复:
[quote=引用 6 楼 ljldashen 的回复:] [quote=引用 5 楼 maomaobaobaobao 的回复:] 请问楼主,其他浏览器怎么做到判断本地是否安装了客户端的?js检查注册表吗?
其它浏览器应该做不到检查注册表,你会问这个问题证明你也查过资料了,谷歌浏览器有个IE Tab插件可一试,目前我的做法是如果安装了自动弹出,没弹出证明没安装,写教程让用户下载文件然后一键安装。[/quote] 那没弹出的话 你的页面任何提示都没有吗?[/quote] 肯定没有弹出提示,要做ie的ActiveX插件可以做,但其它浏览器不行,而且的这个ActiveX插件检测注册表是有前提的,需要IE配置为允许初始化未通过标记的ActiveX插件才可以,很不好用。代码我就不上传了,ActiveX插件的使用教程很多地方都有。
ljldashen 2019-08-08
  • 打赏
  • 举报
回复
引用 8 楼 XBodhi. 的回复:
服务器本地是否可以访问。
可以的
maomaobaobaobao 2019-08-08
  • 打赏
  • 举报
回复
引用 9 楼 maomaobaobaobao 的回复:
[quote=引用 6 楼 ljldashen 的回复:] [quote=引用 5 楼 maomaobaobaobao 的回复:] 请问楼主,其他浏览器怎么做到判断本地是否安装了客户端的?js检查注册表吗?
其它浏览器应该做不到检查注册表,你会问这个问题证明你也查过资料了,谷歌浏览器有个IE Tab插件可一试,目前我的做法是如果安装了自动弹出,没弹出证明没安装,写教程让用户下载文件然后一键安装。[/quote] 那没弹出的话 你的页面任何提示都没有吗?[/quote] 小哥哥能不能把你的js代码借我看看
maomaobaobaobao 2019-08-08
  • 打赏
  • 举报
回复
引用 6 楼 ljldashen 的回复:
[quote=引用 5 楼 maomaobaobaobao 的回复:] 请问楼主,其他浏览器怎么做到判断本地是否安装了客户端的?js检查注册表吗?
其它浏览器应该做不到检查注册表,你会问这个问题证明你也查过资料了,谷歌浏览器有个IE Tab插件可一试,目前我的做法是如果安装了自动弹出,没弹出证明没安装,写教程让用户下载文件然后一键安装。[/quote] 那没弹出的话 你的页面任何提示都没有吗?
XBodhi. 2019-08-08
  • 打赏
  • 举报
回复
服务器本地是否可以访问。
ljldashen 2019-08-08
  • 打赏
  • 举报
回复
引用 3 楼 XBodhi. 的回复:
你直接分析 httpStatusCode 不可以吗?
httpStatusCode 我尝试了,结果全部返回0,搞不明白是怎么回事。
ljldashen 2019-08-08
  • 打赏
  • 举报
回复
引用 5 楼 maomaobaobaobao 的回复:
请问楼主,其他浏览器怎么做到判断本地是否安装了客户端的?js检查注册表吗?
其它浏览器应该做不到检查注册表,你会问这个问题证明你也查过资料了,谷歌浏览器有个IE Tab插件可一试,目前我的做法是如果安装了自动弹出,没弹出证明没安装,写教程让用户下载文件然后一键安装。
maomaobaobaobao 2019-08-08
  • 打赏
  • 举报
回复
请问楼主,其他浏览器怎么做到判断本地是否安装了客户端的?js检查注册表吗?
ljldashen 2019-08-06
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
那个安装在注册表里,如果是C#验证可以检查注册表项目在不在 如果是js验证,正常js不能访问注册表。所以你js访问直接访问url,看返回状态
需求就是验证客户端是否安装插件,C#访问的是服务器端,我觉得既然能够通过URL协议去调用程序,那么应该会有方法可以检测是否能够成功调用的。
wanghui0380 2019-08-06
  • 打赏
  • 举报
回复
那个安装在注册表里,如果是C#验证可以检查注册表项目在不在 如果是js验证,正常js不能访问注册表。所以你js访问直接访问url,看返回状态
ljldashen 2019-08-06
  • 打赏
  • 举报
回复
引用 3 楼 XBodhi. 的回复:
你直接分析 httpStatusCode 不可以吗?
感谢版主的回答,我目前是直接通过IE的activeX来阻止IE的访问失败页面跳转的,虽然没有能够自动判断是否安装,但也算是实现阻止页面跳转了,先结贴,因项目赶,所以这块的优化会放到以后做。
XBodhi. 2019-08-06
  • 打赏
  • 举报
回复
你直接分析 httpStatusCode 不可以吗?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧