zoukankan      html  css  js  c++  java
  • vue2.0 如何在hash模式下实现微信分享

    最近又把vue的demo拿出来整理下,正好要做“微信分享”功能,于是遇到新的问题;

    由于hash模式下,带有“#”,导致微信分享的签证无效;当改成history的模式后,分享ok;

    但是问题来了,history模式下相当操蛋:

    • 刷新页面,页面报错404;这不是扯犊子吗?【不过这个问题,可以在后台解决,这里就不说了】
    • assets下的img文件,引入路径失败;

    对于上面的问题,我是直接不能忍啊,所以history模式是肯定不行的;我决定依旧用hash模式;history模式万万要不得

    那么问题来了:怎么在hash模式下实现微信分享?

    其实微信分享失败的问题,最重要的一步就是解决“#”的问题;

    一般的页面,我们获取当前的url是酱紫操作的

    let params = '&params=' + JSON.stringify({url: window.location.href});

    SPA页面,我们需要做点小调整,调整的目的是让“#”say goodbye

    let params = '&params=' + JSON.stringify({url: encodeURIComponent(window.location.href.split('#')[0])});

    这样修改后,签名的url中没带“#”,这样就ok了,下面贴上完成的代码

    <script>
    // 微信分享
    import configModel from "../models/config.model";
    import elementService from "../services/element.service";
    
    class ShareService{
      wxShare(succCb, cancelCb, errorCb){
        let baseUrl = 'http://q.letwx.com/api/jsapi?action=jscfg';
        let samekey = '&uid=' + configModel.uid + '&wxapiopenid=' + configModel.apiopenid + '&wxapitoken=' + configModel.apitoken + '&debug=nf';
        let params = '&params=' + JSON.stringify({url: encodeURIComponent(window.location.href.split('#')[0])});  // 这里是关键
        let url = baseUrl + params + samekey;
        $.post(url, data => {
          elementService.loadingHide();
          console.log(data);
          switch (data.error) {
            case 0:
              this.wxConfig(data.cfg, configModel.shareInfo, succCb, cancelCb, errorCb);
              break;
            default:
              elementService.message(data.error_msg, 'error');
              break;
          }
        }, 'json');
      }
      wxConfig(wxconfig, share, succCb, cancelCb, errorCb){
        wx.config({
          debug: false,
          appId: wxconfig.appId,
          timestamp: wxconfig.timestamp,
          nonceStr: wxconfig.nonceStr,
          signature: wxconfig.signature,
          jsApiList: [
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo'
          ]
        });
        wx.ready(function() {
          wx.onMenuShareAppMessage({ //朋友
            title: share.title,
            desc: share.desc,
            link: share.link,
            imgUrl: share.imgUrl,
            success: function() {
              succCb && succCb();
            },
            cancel: function() {
              cancelCb && cancelCb();
            }
          });
          wx.onMenuShareTimeline({ //朋友圈
            title: share.desc,
            link: share.link,
            imgUrl: share.imgUrl,
            success: function() {
              succCb && succCb();
            },
            cancel: function() {
              cancelCb && cancelCb();
            }
          });
          wx.onMenuShareQQ({ //QQ
            title: share.title,
            desc: share.desc,
            link: share.link,
            imgUrl: share.imgUrl,
            success: function() {
              succCb && succCb();
            },
            cancel: function() {
              cancelCb && cancelCb();
            }
          });
          wx.onMenuShareWeibo({ //QQ
            title: share.title,
            desc: share.desc,
            link: share.link,
            imgUrl: share.imgUrl,
            success: function() {
              succCb && succCb();
            },
            cancel: function() {
              cancelCb && cancelCb();
            }
          });
        });
        wx.error(function(res) {
          console.log(res);
          errorCb && errorCb(JSON.stringify(res));
        });
      }
    }
    
    let shareSerivice = new ShareService();
    export default shareSerivice;
    </script>
  • 相关阅读:
    EF异常:对一个或多个实体的验证失败
    申请一个带表情的个性网站
    第01周学习提升:测试理论及功能测试------测试理论
    学习方向:先学习自动化。
    从0开始学习性能测试
    【CI/CD】使用Jenkins部署VUE项目到windows服务器_配置Jenkins通过SSH连接windows server机器(3)
    【CI/CD】使用Jenkins部署VUE项目到windows服务器_配置Jenkins拉取git代码(2)
    【CI/CD】使用Jenkins部署VUE项目到windows服务器_任务调研+Jenkins安装(1)
    【CI/CD】使用Jenkins部署VUE项目到windows服务器_配置Jenkins项目(4)
    【CI/CD】Jenkins部署项目后发送邮件配置
  • 原文地址:https://www.cnblogs.com/minigrasshopper/p/8252044.html
Copyright © 2011-2022 走看看