求助,前端如何捕捉到浏览器的弹框

2021-09-02 11:48:39 +08:00
 rationa1cuzz
如图如何检测我点击了打开 MisPlatform.exe
https://www.yuque.com/rationa1/ffb538/17096745?artboard_type=artboard&view=&from=
需求时判断如果没有安装软件则弹框下载,否则就打开
逻辑是打开是判断是否点了打开 MisPlatform.exe 这个按钮,否则就弹框提示下载
1284 次点击
所在节点    问与答
12 条回复
ysc3839
2021-09-02 11:54:42 +08:00
MisPlatform.exe 启动后在某端口启动 http server,然后前端页面尝试向这个端口发请求,请求成功说明已经运行了。
Corua
2021-09-02 15:29:00 +08:00
自定义一个 url schemes 可以直接调用本地程序,同时也能传递数据。
rationa1cuzz
2021-09-02 15:48:10 +08:00
@ysc3839 这样体验会很差,前端肯定会有超时操作(假设 4s 没有消息就说明没有运行,然后弹框下载 /提示失败),假设电脑比较卡,就会出现明明可以成功打开还是会报错
@Corua 搜了一下 url schemes,简单看了一下貌似是 ios 上的,我们是 windows 自己开发的 exe
网上看的方法都是读注册表,理论上可行,感觉不靠谱
ysc3839
2021-09-02 15:56:58 +08:00
@rationa1cuzz 不然你觉得还能有什么办法呢?前端没什么方法跟外部程序通信的。
ysc3839
2021-09-02 15:59:30 +08:00
@Corua 他图里这个就是用 url scheme 打开的吧?前端不能直接检测目标 url scheme 是否存在,也不能直接检测用户是否选择了打开程序。
rationa1cuzz
2021-09-02 16:06:40 +08:00
@ysc3839 就是没有什么办法,想问问有没有什么意见,我目前的办法是 url scheme 这种方式在 windows+chrome 环境下(至少我本地)会有个如图的弹框,但是无法判断是否打开,能否可以检测到弹框的点击事件从而判断是否正常打开?
ysc3839
2021-09-02 16:13:28 +08:00
@rationa1cuzz 我认为不能检测,就算能,我也相信浏览器开发商会在下个版本中改为不能。
autoxbc
2021-09-02 16:33:42 +08:00
用户点击再去判断就有超时问题,页面初始化时就判断,等用户点击超时已经到了。如果用 <img onerror> 判断还可以不用处理跨域,不过仍然需要避免混合内容警告,也就是要提前注入自签名证书
maichael
2021-09-02 17:16:27 +08:00
https://github.com/vireshshah/custom-protocol-check 试下这个,不过 Chrome 新版未必支持
typetraits
2021-09-02 19:34:35 +08:00
QQ 的一键登录就是 1 楼说的这种方法,腾讯的检测域名 DNS 返回 127.0.0.1,然后 QQ 客户端接收并处理请求,腾讯那个有时都会等待几秒钟才能检测到客户端已经打开
Puteulanus
2021-09-03 04:05:39 +08:00
我们现在用的 Citrix 的安全检查就是一楼这种,开网页的时候 URL Protocol 拉起程序(出那个框),然后 Network 里能看到在疯狂轮询,大概半分钟没检测到网页上就会出现下载的提示和链接,让你装上再点重试
doublleft
2021-09-03 16:05:45 +08:00
一楼正解,目前最理想的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX