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 相关文章推荐
一个JS翻页效果
Jul 23 Javascript
Javascript之this关键字深入解析
Nov 12 Javascript
js+css实现tab菜单切换效果的方法
Jan 20 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
js正则取值的结果数组调试方法
Oct 10 Javascript
详解用场景去理解函数柯里化(入门篇)
Apr 11 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
Aug 09 Javascript
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 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 注册时输入信息验证器的实现详解
2013/07/05 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
PHP实现微信退款功能
2018/10/02 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
js的2种继承方式详解
2014/03/04 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
党员党性分析材料
2014/02/17 职场文书
法制报告会主持词
2014/04/02 职场文书
展览会邀请函
2015/02/02 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
python如何利用traceback获取详细的异常信息
2021/06/05 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript