首頁  >  文章  >  web前端  >  vue實作目前頁面分享其他頁面方法

vue實作目前頁面分享其他頁面方法

小云云
小云云原創
2017-12-12 13:39:052738瀏覽

本文主要為大家詳細介紹了vue微信分享功能,vue實現當前頁面分享其他頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能幫助到大家。

本文實例為大家分享了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 + '&timestamp=' + 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 + '&timestamp=' + timestamp + '&url=' + window.location.href

*2、而且我們要在當前頁面分享出去之後, 其他用戶打開之後不是當前分享出去的頁面,這就需要調整shareOut ()函數中obj物件中的link參數為其他頁面連結

6、link參數

上述5 問題中的加密字串匯總的url 和分享物件中link中的頁面鏈接可以不用保持一樣,因為本來就是要在當前頁面分享出去其他頁面的連結。網路上我看到有人說這兩個必須要保持一樣,其實沒有必要, 除非你只是簡單的在vue項目中的其中一個頁面做分享 , 然後只分享當前頁面才需要讓二者保持一致性。

相關推薦:

Vue.js中常用指令有哪些

Vue.js 自訂指令方法

vue如何使用全域變數

以上是vue實作目前頁面分享其他頁面方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn