首頁  >  文章  >  web前端  >  在vue中如何實現目前頁面分享其他頁面功能

在vue中如何實現目前頁面分享其他頁面功能

亚连
亚连原創
2018-06-22 18:14:183016瀏覽

這篇文章主要為大家詳細介紹了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項目中的其中一個頁面做分享 , 然後只分享當前頁面才需要讓二者保持一致性。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

相關JavaScript陣列操作困難(詳細教學)

使用vue如何實作無縫捲動元件

在knockoutjs上如何實作flux

如何建立前端通用的資料模擬框架(詳細教學)

#

以上是在vue中如何實現目前頁面分享其他頁面功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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