vue微信分享 vue实现当前页面分享其他页面


Posted in Javascript onDecember 02, 2017

本文实例为大家分享了vue微信分享展示的具体代码,供大家参考,具体内容如下

首先以分享给朋友为例

1、先看官方文档

wx.onMenuShareAppMessage({

 title: '', // 分享标题

 desc: '', // 分享描述

 link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

 imgUrl: '', // 分享图标

 type: '', // 分享类型,music、video或link,不填默认为link

 dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

 success: function () {

  // 用户确认分享后执行的回调函数

 },

 cancel: function () {

  // 用户取消分享后执行的回调函数

 }

});

2、vue分享踩的坑

* 1、微信分享中获取动态的url
* 2、 微信二次分享自动添加的参数     form=singlemessage
* 3、vue中各个页面都可以调用分享

3、直接代码分析

为了保证每个页面都可以调起微信分享,需要在vue根组件中,添加 watch监听
代码

watch: {
  // 监听 $route 变化调用分享链接
  "$route"(to, from) {
   let currentRouter = this.$router.currentRoute.fullPath; 
   if(currentRouter.indexOf('userShare') == -1){  
   //如果不是userShare分享页面,则分享另外一个接口
    this.shareOut();
   }else{
    this.shareOutTwo();   
   //当前页面是userShare页面时分享调用另外一个接口  
   }
  }
 },

4、shareOut()函数

let signStr = '';   //sha1加密字符串
let timestamp = 1473254558; //时间戳
let nonceStr = 'shupao';
   var obj = {
    title:"",    //标题
    desc:"文字描述",   //描述
    link:"http://www.XXXXXX.com/wx/pub/sr/simpleRegister.do",
    imgUrl:"http://XXXXXXXXX.com/picactive.jpg"
   };
   this.$ydkAjax({
    SENTYPE: "GET",
    url: this.$domain + '/wx/pub/common/getJsApiTicket.json', //自己服务器获取jsapi_ticket接口
    params: null,
    successFc: (response) => {
     //拼接sha1加密字符串
     signStr = 'jsapi_ticket=' + response.data.data + '&noncestr=' + nonceStr + '×tamp=' + timestamp + '&url=' + window.location.href;
     var signature = SHA1(signStr);
     wx.config({
      debug: false,
      appId: "wx6957b3a945a05e90",  //appId
      timestamp: timestamp,   //时间戳
      nonceStr: nonceStr,    //加密需要字符串(自己定义的)  
      signature: signature,   //sha1加密后字符串
      jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage']
     });
     wx.ready(function () {
      //分享到朋友圈"
      wx.onMenuShareTimeline({
       title: obj.title,
       link: obj.link, // 分享链接
       imgUrl: obj.imgUrl, // 分享图标
       success: function () {
        // console.log('分享到朋友圈成功')
       },
       cancel: function () {
        // console.log('分享到朋友圈失败')
       }
      });
      //分享给朋友
      wx.onMenuShareAppMessage({
       title: obj.title, // 分享标题
       desc: obj.desc, // 分享描述
       link: obj.link, // 分享链接
       imgUrl: obj.imgUrl, // 分享图标
       success: function () {
        // console.log('分享到朋友成功')
       },
       cancel: function () {
        // console.log('分享到朋友失败')
       }
      });
     })
    },
    isLayer: false
   })

5、需要注意的事

*1、url是直接通过 window.location.href 获取的,不是使用 window.location.href.split(“#”)[0]来获取, 因为我的vue项目是通过hash模式来进行路由跳转的 , 直接使用 window.location.href.split(“#”)[0]会导致签名失败

//拼接sha1加密字符串
signStr = 'jsapi_ticket=' + response.data.data + '&noncestr=' + nonceStr + '×tamp=' + timestamp + '&url=' + window.location.href

*2、而且我们要在当前页面分享出去之后 , 其他用户打开之后 不是当前分享出去的页面 ,这就需要 调整 shareOut()函数中 obj对象中的 link参数为其他页面链接

6、link参数

上述 5 问题中的加密字符串汇总的 url 和 分享对象中 link中的页面链接可以不用保持一样,因为本来就是要在当前页面分享出去其他页面的链接。网上我看到有人说这两个必须要保持一样,其实没有必要, 除非你只是简单的在vue项目中的其中一个页面做分享 , 然后只分享当前页面才需要让二者保持一致性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 动态创建VML的方法
Oct 14 Javascript
javascript instanceof 与typeof使用说明
Jan 11 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
Javascript监视变量变化的方法
Jun 09 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
Vuex中mutations与actions的区别详解
Mar 01 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
微信小程序自定义组件components(代码详解)
Oct 21 Javascript
Vue数据双向绑定底层实现原理
Nov 22 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
小程序实现侧滑删除功能
Jun 25 Javascript
Vue按需加载的具体实现
Dec 02 #Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 #Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 #jQuery
如何让你的JS代码更好看易读
Dec 01 #Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 #Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 #Javascript
利用JS测试目标网站的打开响应速度
Dec 01 #Javascript
You might like
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
javascript操作select元素实例分析
2015/03/27 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
几种响应式文字详解
2017/05/19 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
koa-router源码学习小结
2018/09/07 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
python正则表达式re模块详解
2014/06/25 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python实现人机五子棋
2020/03/25 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
JAVA高级程序员面试题
2013/09/06 面试题
专科毕业生就业推荐信
2013/11/01 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
超市员工辞职信范文
2015/05/12 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android