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 相关文章推荐
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
Jun 05 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
JS实现随机乱撞彩色圆球特效的方法
May 05 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
如何屏蔽防止别的网站嵌入框架代码
Aug 24 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
JavaScript浏览器对象之一Window对象详解
Jun 03 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
了解JavaScript中的选择器
May 24 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
php 魔术方法使用说明
2009/10/20 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
Python列表生成器的循环技巧分享
2015/03/06 Python
python 系统调用的实例详解
2017/07/11 Python
python3大文件解压和基本操作
2017/12/15 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
python修改文件内容的3种方法详解
2019/11/15 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
python构造IP报文实例
2020/05/05 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
高山背包:High Sierra
2017/11/23 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
公司大门门卫岗位职责
2014/06/11 职场文书
悬空寺导游词
2015/02/05 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP