编程语言
首页 > 编程语言> > 微信公众号h5实现点击按钮跳转到小程序

微信公众号h5实现点击按钮跳转到小程序

作者:互联网

微信公众号h5实现点击按钮跳转到小程序,先决条件是小程序和公众号已进行关联。
1、登录微信公众平台-设置-关联设置 进行关联
2、登录微信公众平台-设置-基本设置-账号信息-原始ID 复制
3、代码如下

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试页</title>
    <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            border: 0;
        }

        body {
            width: 100%;
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            box-sizing: border-box;
            padding: 0 28px;
        }

        .app {
            text-align: center;
        }

        .app-info {
            margin-bottom: 93px;
            font-size: 24px;
        }

        .main {
            color: #0072FF;
            line-height: 45px;
            letter-spacing: 2px;
        }

        .sub {
            color: #263047;
            letter-spacing: 1px;
        }

        .app-img {
            width: 100%;
            object-fit: contain;
        }

        .app-btn {
            width: 247px;
            line-height: 45px;
            text-align: center;
            background: #0072FF;
            border-radius: 23px;
            color: #FFFFFF;
            font-size: 15px;
            font-weight: bold;
            margin: 130px auto 0;
            user-select: none;
        }

        .hidden {
            display: none;
        }
    </style>
</head>

<body>
    <div id="app" class="app">
        <div id="wechat-container">
            
        </div>
    </div>
    <script>
        function docReady(fn) {
            if (document.readyState === 'complete' || document.readyState === 'interactive') {
                fn()
            } else {
                document.addEventListener('DOMContentLoaded', fn);
            }
        }
        docReady(async function () {
            const ua = navigator.userAgent.toLowerCase(); // 浏览器ua识别类型
            const isWXWork = ua.match(/wxwork/i) == 'wxwork'; // 判断是否有微信线程
            const isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'; // 是否是微信浏览器
            // 判断是否是桌面浏览器
            let isDesktop = false
            if (!navigator.userAgent.match(
                    /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
                isDesktop = true
            }
            if(isDesktop){
                var cu = document.getElementById('wechat-container');
                cu.innerHTML = '<div class="app-btn">请在手机微信里扫码访问</div>';
                // alert("请用手机打开")
            }else if(isWeixin){
                getSignature();
            } else {
                var cu = document.getElementById('wechat-container');
                cu.innerHTML = '<div class="app-btn">请在手机微信里扫码访问</div>';
                // cu.innerText = '请在手机微信里扫码访问';
            }
        });
        // 获取签名,必备步骤与后端配和
        function getSignature() {
            const url = 'XXX';
            const xhr = new XMLHttpRequest();
            xhr.open('GET', url, true);
            xhr.send();
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    const result = JSON.parse(xhr.responseText) || {};
                    if (result.code === 1) {
                        wx.config({
                            debug: false,
                            appId: , // 必填 公众号appid
                            timestamp: , // 必填,生成签名的时间戳
                            nonceStr: '', // 必填,生成签名的随机串
                            signature: , // 必填,签名
                            jsApiList: ['chooseImage'],
                            openTagList: ['wx-open-launch-weapp'],
                        })
                        wx.ready(()=>{
                            var cu = document.getElementById('wechat-container'); 
                            let id = getQueryVariable('id');
                            // 动态创建跳转按钮   username传入第二步复制的小程序原始ID   path为需要跳转的小程序页面路径    scene为页面带的参数可在小程序页面进行获取
                            cu.innerHTML= `<wx-open-launch-weapp id="launch-btn" username="" path="/pages/index/index?scene=${id}"> 
                                            <script type="text/wxtag-template">
                                              <div 
                                                class="app-btn" 
                                                style="width: 247px;
                                                line-height: 45px;
                                                text-align: center;
                                                background: #0072FF;
                                                border-radius: 23px;
                                                color: #FFFFFF;
                                                font-size: 15px;
                                                font-weight: bold;
                                                margin: 130px auto 0;
                                                user-select: none;">立即体验</div>
                                            <\/script>
                                          </wx-open-launch-weapp>`;
                        })
                        wx.error((error)=>{
                            // alert(JSON.stringify(error))
                        })
                    }
                }
            }
        }
    </script>
</body>

</html>

标签:const,微信,h5,xhr,跳转,document,cu
来源: https://www.cnblogs.com/shymi/p/16263548.html