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 FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
五个jQuery图片画廊插件 推荐
May 12 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 Javascript
javascript正则表达式之search()用法实例
Jan 19 Javascript
JavaScript希尔排序、快速排序、归并排序算法
May 08 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
原生js实现表格循环滚动
Nov 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 date()日期时间函数详解
2010/05/16 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
Python实现统计单词出现的个数
2015/05/28 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python实现超市商品销售管理系统
2019/10/25 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
远程教育心得体会
2014/01/03 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
陈欧的广告词
2014/03/18 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
公司保密管理制度
2015/08/04 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript