vue移动端扫一扫(history模式下)

  • 出现的问题:ios会有bug

  • 原因:ios上history模式下的url不会刷新,一直是刚进入移动端的那个url

  • 解决方法:

    1.如果是刚进入移动端的页面就调用扫一扫,传参的url是正确的

    2.如果跳转到下一个页面才进行扫一扫,url就不正确

    (1)方法一:使用window.location.href进行跳转,ios上的url就会刷新
    (2)方法二:正在寻找
beginScan() {
      let _this = this;
      let data={};
      let url='';
      url=window.location.href
      data={
        url:url.split("#")[0]
      }
      getWXconfig(data).then(res => {
        let Data = res.data;
        wx.config({
          debug: false, // 开启调试模式,开发时可以开启
          appId: Data.appId, // 必填,公众号的唯一标识   由接口返回
          timestamp: Data.timestamp, // 必填,生成签名的时间戳 由接口返回
          nonceStr: Data.nonceStr, // 必填,生成签名的随机串 由接口返回
          signature: Data.signature, // 必填,签名 由接口返回
          jsApiList: ["checkJsApi", "scanQRCode"] // 此处填你所用到的方法
        });
      });
      wx.error(function(res) {
        Toast.fail("配置验证失败" + res.errMsg);
      });
      wx.ready(function() {
        wx.checkJsApi({
          jsApiList: ["scanQRCode"],
          success: function(res) {
            // 点击按钮扫描二维码
            if (res.checkResult.scanQRCode === true) {
              wx.scanQRCode({
                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function(res) {
                    let url = res.resultStr;
                    //截取返回的url的最后一个/后面的值
                    if (url != null && url != "") {
                      let cutUrl = url.split("/");
                      _this.book_no = cutUrl[cutUrl.length - 1];
                    }
                }
              });
            } else {
              Toast.fail("抱歉,当前客户端版本不支持扫一扫");
            }
          }
        });
      });
    },

你可能感兴趣的:(vue移动端扫一扫(history模式下))