• 使用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

  • 相关阅读:
    常春藤之路,从幼儿园开始走起
    常青藤零距离
    web-service
    WebService到底是什么?
    How to add libraries to “External Libraries” in WebStorm/PhpStorm/Intellij
    浏览器核心说明
    万维网
    js和jquery获取span里面的值
    TPshop学习
    sphinx文档
  • 原文地址:https://www.cnblogs.com/tangjiao/p/9646855.html
Copyright © 2020-2023  润新知