ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-05-12 18:00:29  阅读:161  来源: 互联网

标签:const 微信 h5 xhr 跳转 document cu


微信公众号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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有