V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rationa1cuzz
V2EX  ›  问与答

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

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