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几种形式的树结构菜单
May 10 Javascript
jquery nth-child()选择器的简单应用
Jul 10 Javascript
js读取本地excel文档数据的代码
Nov 11 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
jquery实现的省市区三级联动
Apr 02 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
Nov 21 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
Vue用v-for给src属性赋值的方法
Mar 03 Javascript
详解从react转职到vue开发的项目准备
Jan 14 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
vue.js 实现a标签href里添加参数
Nov 12 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 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添加MySQL数据记录代码
2008/06/07 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
理解javascript异步编程
2016/01/27 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
Python日期的加减等操作的示例
2017/08/15 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
土木工程专业自荐信
2013/10/04 职场文书
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
小学毕业寄语大全
2014/04/03 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python