微信公众号和小程序遇到的问题合集

目录

1.授权登录

2.添加公共路由前缀

3.改变单独某一页面css无效的情况

4.禁止浏览器缩放

5.微信关怀模式下字体变大样式错乱的问题

6.微信公众号支付及支付成功后的回调问题

7.根据数组的某一个数组进行数组排序

8.小程序新版本自动更新

1.授权登录

重复跳转的解决方法:重新写一个专门授权的跳转页面

参考链接:网页授权 | 微信开放文档

2.添加公共路由前缀

main.js

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app',true,"/mujuan")
// /mujuan为公共路由名称

vue.config.js

module.exports = defineConfig({
  publicPath:'/mujuan',

  transpileDependencies: true,
  lintOnSave:false
})
// 添加publicPath

3.改变单独某一页面css无效的情况

 beforeCreate () {
  document.querySelector('body').setAttribute('style', 'background-color:#ff3c00;')
},
 
beforeDestroy () {
  document.querySelector('body').removeAttribute('style')
},
// 为了避免页面样式穿透  销毁

4.禁止浏览器缩放

在打包之后的index.html中更改

  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>标题</title>
<script>
        //禁止双指放大
        document.documentElement.addEventListener('touchstart', function (event) {
            if (event.touches.length > 1) {
                event.preventDefault();
            }
        }, { passive: false });
        // 禁止双击放大
        let lastTouchEnd = 0;
        document.documentElement.addEventListener('touchend', function (event) {
            var now = Date.now();
            if (now - lastTouchEnd <= 300) {
                event.preventDefault();
            }
            lastTouchEnd = now;
        }, { passive: false });

    </script>

5.微信关怀模式下字体变大样式错乱的问题

 (function() {
           if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
               handleFontSize();
           } else {
               if (document.addEventListener) {
                   document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
               } else if (document.attachEvent) {
                   document.attachEvent("WeixinJSBridgeReady", handleFontSize);
                   document.attachEvent("onWeixinJSBridgeReady", handleFontSize);  }
           }
           function handleFontSize() {
               // 设置网页字体为默认大小
               WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
               // 重写设置网页字体大小的事件
               WeixinJSBridge.on('menu:setfont', function() {
                   WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
               });
           }
       })();  


<style type = 'text/css'>
body {
    -webkit-text-size-adjust: 100% !important;
    text-size-adjust: 100% !important;
    -moz-text-size-adjust: 100% !important;
}
<style>

6.微信公众号支付及支付成功后的回调问题

支付成功之后要跳转页面,开始一直不跳,最后才发现是this指向改变了

//  yarn add weixin-jsapi --save  下包
import wx from "weixin-jsapi";

paynummoney(order) {
      var that = this;
      let is_niming = "";
      if (that.radioValue == true) {
        is_niming = 1;
      } else {
        is_niming = 0;
      }
      request
        .post("/api/v2/Juanzeng/pay_two", {
          order: order,
          cs_project_id: that.cs_project_id,
          price: that.moneyNum,
          is_niming: is_niming,
        })
        .then((res) => {
          wx.ready(() => {
            wx.chooseWXPay({
              timestamp: res.data.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
              nonceStr: res.data.nonceStr, // 支付签名随机串,不长于 32 位
              package: res.data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
              signType: res.data.signType, // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致
              paySign: res.data.paySign, // 支付签名

              success: function (res) {
                // res.errMsg === 'chooseWXPay:ok'方式判断前端返回,微信团队郑重提示:
                // res.errMsg将在用户支付成功后返回ok,但并不保证它绝对可靠, 切记。
                // res.errMsg === 'chooseWXPay:cancel'  支付取消

                if (res.errMsg === "chooseWXPay:ok") {
                  // 支付成功进入这个判断
                  // Toast.success("支付成功");
                  // Dialog.confirm({
                  //   title: "支付成功",
                  //   message: "点击确定按钮查看证书",
                  // })
                  //   .then(() => {
                  //     that.gozhengshu(order);
                  //   })
                  //   .catch(() => {
                  //     that.moneyNum = "";
                  //     that.showTitPopup = false;
                  //   });
                  that.gozhengshu(order);
                } else if (res.errMsg === "chooseWXPay:cancel") {
                  // 经过测试 用户取消支付不会进入这个判断,而是进入complate和cancel函数
                  Toast.success("支付取消");
                }
              },
              // 不管支付成功与否,只要拉起支付之后进行任何操作之后,都会进入complate函数
              complete: function (res) {
                if (res.errMsg === "chooseWXPay:ok") {
                  // 成功 res.errMsg === 'chooseWXPay:ok' // 支付成功提示页面,点击完成按钮之后
                  Toast.success("支付成功");

                  // Dialog.confirm({
                  //   title: "支付成功",
                  //   message: "点击确定按钮查看证书",
                  // })
                  //   .then(() => {
                  //     that.gozhengshu(order);
                  //   })
                  //   .catch(() => {
                  //     that.moneyNum = "";
                  //     that.showpopup = false;
                  //   });
                  that.gozhengshu(order);

                  // 或者关闭窗口// wx.closeWindow()  如果调用这个关闭接口,要在验签的时候配置jsapiList// WeixinJSBridge.call('closeWindow');
                } else if (res.errMsg === "chooseWXPay:cancel") {
                  // 取消 res.errMsg === 'chooseWXPay:cancel'
                  Toast.success("支付取消");
                }

                // 对于下面这个说法:我经过实际测试:ios和Android支付成功后点击完成按钮都会进入success和complete函数,并且返回信息都是 res.errMsg === 'chooseWXPay:ok'
                // 网友说法:对于安卓客户端支付成功后不进入chooseWXPay函数success的问题原因是:iOS和安卓返回的数据不同,实际如下:支付成功后:安卓客户端返回的是 {"errMsg":"getBrandWCPayRequest:ok"},而iOS返回的是{"err_Info":"success","errMsg":"chooseWXPay:ok"},安卓找不到success入口
              },
              // 用户取消支付--实际上进入cancel 和 complate 函数
              cancel: function (res) {
                Toast.success("支付取消");
              },
              // 支付失败
              fail: function (res) {
                Toast.success("支付失败");
              },
            });
          });
        
        });
    },
    wxjssdk() {
      request.post("/api/v2/Juanzeng/get_thing").then((res) => {
        wx.config({
          debug: false,
          appId: res.data.data.appId,
          timestamp: res.data.data.timestamp,
          nonceStr: res.data.data.nonceStr,
          signature: res.data.data.signature,
          jsApiList: ["chooseWXPay"],
          openTagList: ["wx-open-launch-weapp"],
        });
      });
    },

  created() {
    this.wxjssdk();
  },

7.根据数组的某一个数组进行数组排序

 sort() {
        // 从大到小排列
        function sortUseAge(a, b) {
            return b.shop_staff_congye - a.shop_staff_congye;
        }

        const newList = this.data.cyjglist.sort(sortUseAge);
        console.log(newList);
        this.setData({
            cyjglist:newList
        })
    },

8.小程序新版本自动更新

app.js , 

  autoUpdate:function(){ 
    var self=this // 获取小程序更新机制兼容 
    if (wx.canIUse('getUpdateManager')) { 
        const updateManager = wx.getUpdateManager() //1. 检查小程序是否有新版本发布                     
        updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 
            if (res.hasUpdate) { //2. 小程序有新版本,则静默下载新版本,做好更新准备                                                 
             updateManager.onUpdateReady(function () {
                 wx.showModal({ 
                        title: '更新提示', 
                        content: '新版本已经准备好,是否重启应用?',
                         success: function (res) { 
                            if (res.confirm) { 
                               //3. 新的版本已经下载好,调用applyUpdate应用新版本并重启  
                                updateManager.applyUpdate() 
                            } else if (res.cancel) {
                                     //不应用 
                                } 
                            } 
                            })     
                         })

        updateManager.onUpdateFailed(function () {
                // 新的版本下载失败
             wx.showModal({ title: '已经有新版本了哟~',
                      content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',             
                          })
            }) 
        } 
       })
    } else { 
      // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示     
       wx.showModal({ title: '提示', 
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' 
        }) 
        } 
    },
 onLaunch() {
    this.autoUpdate() 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值