使用JS检测自定义协议是否存在

【该博客是拼接他人的,原因我们这边PC的开发人员问我,有没有关于js某个对象直接能检测手机或者电脑的自定义协议的,我上网搜了下,貌似移动端的解决比较多】

最终解决方案:还是需要github上面大神写的方法:protocolcheck

https://www.lefer.cn/posts/34578/

之前在《自定义通用URL协议实现在浏览器中打开本机任意程序》介绍了通过自定义协议使的浏览器可以调起客户端本地程序的方法,在企业环境的实际应用中,又面临着如何检测自定义的协议是否存在的问题,ie下可以通过activex检测注册表项,chrome该怎么办呢?有没有通用的解决办法呢?答案是肯定的,甚至有人已经将该功能封装成了通用JS。具体如下。

  • 访问 github,下载 protocolcheck.js 。引用该js后,即可使用以下代码检测

    window.protocolCheck(href,callback)

    示例代码


    • <!DOCTYPE html>
      <html>
      <head lang="zh">
          <meta charset="UTF-8">
          <title>自定义协议探测</title>
      </head>
      <body>
          <h1>Click one of these labels:</h1>
          <div href="unexists:randomstuff">一个不存在的协议</div>
          <div href="ff://C:/Windows/System32/notepad.exe">一个存在的协议</div>
          <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
          <script src="protocolcheck.js"></script>
          <script src="example.js"></script>
      </body>
      </html>

      exampe.js

    • $(function () {
          $("div[href]").click(function (event) {
              window.protocolCheck($(this).attr("href"),
                  function () {
                      alert("协议未注册");
                  });
              event.preventDefault ? event.preventDefault() : event.returnValue = false;
          });
      });

      运行效果

  • 点击第一个a标签时,提示协议未注册,点击第二个a标签时,正常打开了记事本程序。

  • END

posted @ 2018-09-14 15:25  tangjiao_Miya  阅读(8922)  评论(0编辑  收藏  举报