欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue單頁式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例

 更新時(shí)間:2017年07月21日 11:51:10   作者:MINGXINICE  
本篇文章介紹了Vue單頁式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文介紹了Vue單頁式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例,分享給大家,具體如下:

前端微信分享的基本步驟:

一.綁定域名:

先登錄微信公眾平臺(tái)進(jìn)入“公眾號(hào)設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。這個(gè)不多說,微信開發(fā)的都應(yīng)該清楚。

二.引入js文件:

在需要調(diào)用JS接口的頁面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js

請(qǐng)注意,如果你的頁面啟用了https,務(wù)必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否則將無法在iOS9.0以上系統(tǒng)中成功使用JSSDK。

這里我采用了https,而且我用Vue-cli生成的項(xiàng)目,因此我將文件直接在index.html中引入。

三.通過config接口注入權(quán)限驗(yàn)證配置:

在下面會(huì)有實(shí)例說明,這里我只想說,接口可以放在自己寫的AJAX回調(diào)用,將成功回調(diào)的值直接傳入到wx.config需要的參數(shù)中。

四.通過ready接口處理成功驗(yàn)證

文檔中說:“ config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,config是一個(gè)客戶端的異步操作,所以如果需要在頁面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中?!?br />

個(gè)人認(rèn)為,這個(gè)可能是針對(duì)APP的,我的項(xiàng)目是微信的H5功能頁面,如果想分享的話只能從右上角的“三個(gè)點(diǎn)點(diǎn)”中直接分享。(這僅是小生的個(gè)人想法,還望有學(xué)識(shí)有智謀的您給出確切的答案)。

五.通過error接口處理失敗驗(yàn)證:這個(gè)我只是寫到了項(xiàng)目中,不多做說明。

其他的文檔中寫的很清楚,聰明的你可能不需要我更多的解釋。微信API給的還算詳細(xì),很多地方直接調(diào)用就可以。只是對(duì)于初次使用的人來說,放到自己的環(huán)境中會(huì)有些許小坑很難發(fā)現(xiàn),導(dǎo)致浪費(fèi)很多時(shí)間,但解決后發(fā)現(xiàn)并不難處理。以下是我開發(fā)時(shí)的部分筆記,如有不足還望各位觀眾老爺多多提點(diǎn):

1.觸及某個(gè)頁面分享時(shí),需要得到當(dāng)前該頁面的Url,用來傳給后臺(tái)。換取config中的參數(shù)。

2.頁面分享出去的窗口中對(duì)應(yīng)著一個(gè)接口,該接口中包含一個(gè)Url,這個(gè)Url是分享者希望分享出去的頁面鏈接。在這個(gè)Url中可以拼加自己需要的參數(shù),實(shí)現(xiàn)分享的追蹤。

如:var shareUrl = 'https://show.mypro.com/#/product_details?userId=' + userId + '&level=' + level;這個(gè)shareUrl可以直接傳到街口的參數(shù)中。

3.分享頁面的JS中必須配置有config,在config中有一個(gè)jsApiList,在其中放置需要使用的JS接口列表,并以字符串的形式寫入。

//接口入住權(quán)限驗(yàn)證配置
wx.config({ 
   debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。

   appId: appId, // 必填,公眾號(hào)的唯一標(biāo)識(shí) 
   timestamp: timestamp, // 必填,生成簽名的時(shí)間戳 
   nonceStr: nonceStr, // 必填,生成簽名的隨機(jī)串 
   signature: signature, // 必填,簽名,見附錄1 
   jsApiList: [
     'onMenuShareTimeline',
     'onMenuShareAppMessage'
  ] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});

4.在config下方,有一個(gè)ready方法,該方法用來初始化我們要應(yīng)用的js列表,而且任何方法一定要放在config方法后才可以。

如在Vue中,可以將該方法放在mounted中,并在其中放入‘分享給朋友',‘分享至朋友圈'的js接口。

值得注意的是:兩個(gè)接口并不是寫在觸發(fā)事件的方法中(如@click='Fun'),而是直接在頁面初始化的時(shí)候,放在ready中直接被調(diào)用。

wx.ready(function() {
  wx.onMenuShareAppMessage({
    title: shareTitle, // 分享標(biāo)題
    desc: 'This is a test!', // 分享描述
    link: shareUrl, // 分享鏈接
    imgUrl: imgUrl, // 分享圖標(biāo)
    type: '', // 分享類型,music、video或link,不填默認(rèn)為link
    dataUrl: '', // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
    success: function() {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function() {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
    }
  });
  wx.onMenuShareTimeline({
    title: shareTitle, // 分享標(biāo)題
    link: shareUrl,
    imgUrl: imgUrl, // 分享圖標(biāo)
    success: function() {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function() {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
    }
  });
});

以上部分代碼放在Vue的mounted中,當(dāng)頁面組件生成的時(shí)候直接被調(diào)用。

5.坑點(diǎn)

個(gè)人認(rèn)為比較坑的點(diǎn)(1):因?yàn)槲业捻?xiàng)目為單頁式應(yīng)用,并且采用了Vue中的hash模式,因此項(xiàng)目路徑中帶有#號(hào)的部分,微信可能會(huì)在其前面加一個(gè)?號(hào)(不知未來還會(huì)不會(huì)有變化)。這樣當(dāng)自己拼值時(shí)(如“?userId=123”)則需要取第二個(gè)問號(hào)后的值。之前無論如何都取不到自己拼在路徑后的值,復(fù)制鏈接后才發(fā)現(xiàn),微信默默地給加了一個(gè)問號(hào)和其他參數(shù)在其中。

個(gè)人認(rèn)為比較坑的點(diǎn)(2):我的項(xiàng)目中,如果在公眾號(hào)中瀏覽各個(gè)界面,直接都是通過路由進(jìn)行跳轉(zhuǎn)的。但當(dāng)瀏覽者從分享窗口進(jìn)入后,他從分享頁按著正常路由跳轉(zhuǎn)到其他頁面,其他頁面的邏輯中如果有需要獲取當(dāng)前頁面url的需要,會(huì)發(fā)現(xiàn)這個(gè)url和正常路由跳轉(zhuǎn)的不一樣。

 例如:

這是正常跳轉(zhuǎn)后的路徑:https://show.mypro.com/#/firPage?userId=1

這是從分享頁跳轉(zhuǎn)后的路徑:https://show.mypro.com/?#/firPage?userId=1

 非常明顯,如果根據(jù)問號(hào)的索引去獲取當(dāng)前Id,我永遠(yuǎn)獲取不到。不知是否和坑(1)中同一個(gè)原因,因此我獨(dú)立寫了出來。因?yàn)槭堑谝淮巫鲞@個(gè)地方的東西,而且只能在移動(dòng)端環(huán)境,我測(cè)了很多遍才發(fā)現(xiàn)。得知真相的我宛如醍(bei)醐(gou)灌(ri)頂(le)??赡苁俏医?jīng)驗(yàn)太少,才如此踩坑。

6.后續(xù)坑點(diǎn)補(bǔ)充:

(1) 微信分享中:只要是分享出去的頁面,如果為hash模式(在路由中帶有#號(hào)),微信都會(huì)在#的前邊給加一個(gè)‘?'。雖然微信API中有說過關(guān)于#的問題。但是很容易單純的認(rèn)為,僅僅在需要分享的頁面的url會(huì)被修改,這也是我疏忽的一個(gè)地方。

    (2) 蘋果和iPhone打架后,我的微信功能頁也莫名其妙的受到了影響,雖然我的公眾號(hào)沒有涉及到打賞的功能。具體問題如下:

我的分享shareUrl為:

復(fù)制代碼 代碼如下:

var shareUrl = 'https://migxin.mypro.com/#/product_details?custId=null&shareCustId=' + custId + '&shareProductId=' + productId;

通過安卓分享出去的頁面可以成功獲取頁面url后的值,并且成功顯示頁面。url如下:

復(fù)制代碼 代碼如下:

https://migxin.mypro.com/#/product_details?custId=7&shareCustId=7&shareProductId=1223

但是在iphone中,頁面URl后的值被截取掉了,頁面因?yàn)闊o法獲取值而無法顯示。url如下:

復(fù)制代碼 代碼如下:

https://migxin.mypro.com/?from=timeline#/product_details

可以看到微信把我的#前給加了東西,并且截取掉了我?后邊拼接的值。這個(gè)問題依然存在,也希望有這方面經(jīng)驗(yàn)的大神可以留下您寶貴的建議或者解決辦法。

這對(duì)這個(gè)問題我目前用了個(gè)很牽強(qiáng)的處理辦法:把shareUrl換成一個(gè)ajax請(qǐng)求,打開時(shí)直接像后臺(tái)發(fā)請(qǐng)求,然后返回給我一個(gè)他那邊拼的頁面url我來進(jìn)行解析,這樣我就可以從這個(gè)url中解析值了。

7.有關(guān)微信公眾號(hào)的關(guān)注頁面:

目前我們不用自己去做公眾號(hào)的關(guān)注頁面,進(jìn)入公眾號(hào),查看歷史消息,在該頁面會(huì)提供進(jìn)入公眾號(hào)的接口按鈕。在這個(gè)頁面中,按鈕的狀態(tài)為“進(jìn)入公眾號(hào)”,“關(guān)注”??梢宰孕信袛喈?dāng)前用戶是否已經(jīng)關(guān)注公眾號(hào)。該頁面的鏈接也是直接可以復(fù)制得到的,對(duì)于迭代期比較緊張的情況 will do the trick~可以直接拿來使用。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue頁面params傳值的坑及解決

    vue頁面params傳值的坑及解決

    這篇文章主要介紹了vue頁面params傳值的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解Vue3.x中組件間參數(shù)傳遞的示例代碼

    詳解Vue3.x中組件間參數(shù)傳遞的示例代碼

    在?Vue3.x?中,組件間的參數(shù)傳遞是構(gòu)建復(fù)雜應(yīng)用時(shí)不可或缺的一部分,無論是父子組件還是兄弟組件之間,合理的數(shù)據(jù)流動(dòng)都是保持應(yīng)用狀態(tài)一致性和可維護(hù)性的關(guān)鍵,本文將通過示例代碼,詳細(xì)介紹?Vue3.x?中組件間如何傳遞參數(shù),需要的朋友可以參考下
    2024-03-03
  • vue3中實(shí)現(xiàn)圖片壓縮的示例代碼

    vue3中實(shí)現(xiàn)圖片壓縮的示例代碼

    圖片壓縮是一種比較便捷的壓縮方式,本文主要介紹了vue3中實(shí)現(xiàn)圖片壓縮的示例代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • vue?contextmenujs鼠標(biāo)右鍵菜單高度不夠顯示不全的問題及解決方法

    vue?contextmenujs鼠標(biāo)右鍵菜單高度不夠顯示不全的問題及解決方法

    這篇文章主要介紹了使用vue-contextmenujs鼠標(biāo)右鍵菜單時(shí),當(dāng)高度不夠時(shí)顯示不全的問題,大家需要注意本文給提供的解決方案雖然能夠解決現(xiàn)有問題,但是如果組件升級(jí)了,想要使用最新升級(jí)后的組件,還要再次修改代碼,需要的朋友可以參考下
    2022-07-07
  • ElementUI中el-table表格組件如何自定義表頭

    ElementUI中el-table表格組件如何自定義表頭

    最近需要做一個(gè)el-table的表格,表頭需要顯示提示信息,本文主要介紹了ElementUI中el-table表格組件如何自定義表頭,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • vue中echarts關(guān)系圖動(dòng)態(tài)增刪節(jié)點(diǎn)以及連線方式

    vue中echarts關(guān)系圖動(dòng)態(tài)增刪節(jié)點(diǎn)以及連線方式

    這篇文章主要介紹了vue中echarts關(guān)系圖動(dòng)態(tài)增刪節(jié)點(diǎn)以及連線方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue如何使用Dayjs計(jì)算常用日期詳解

    Vue如何使用Dayjs計(jì)算常用日期詳解

    這篇文章主要給大家介紹了關(guān)于Vue如何使用Dayjs計(jì)算常用日期的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue src動(dòng)態(tài)加載請(qǐng)求獲取圖片的方法

    vue src動(dòng)態(tài)加載請(qǐng)求獲取圖片的方法

    這篇文章主要為大家詳細(xì)介紹了vue src動(dòng)態(tài)加載請(qǐng)求獲取圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Vue 2.0 偵聽器 watch屬性代碼詳解

    Vue 2.0 偵聽器 watch屬性代碼詳解

    這篇文章主要介紹了Vue 2.0 偵聽器 watch屬性代碼詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-06-06
  • Vue Router根據(jù)后臺(tái)數(shù)據(jù)加載不同的組件實(shí)現(xiàn)

    Vue Router根據(jù)后臺(tái)數(shù)據(jù)加載不同的組件實(shí)現(xiàn)

    本文主要介紹了根據(jù)用戶所購買服務(wù)的不同,有不同的頁面展現(xiàn)。文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論