自定義QQ和微信分享卡片
本文介紹自定義微信分享卡片和自定義QQ分享卡片分別所用的兩種方式,完整程式碼連結放在文章末尾。
自定義分享卡片有兩種方式:通過JS-SDK實現和通過修改meta標籤實現。
實踐證明,使用JS-SDK的方式適用且僅適用於自定義微信分享卡片,修改meta標籤的方式適用且僅適用於自定義qq分享卡片。
特此美文,獻給想兩全其美的你。
自定義微信分享卡片
自定義微信分享卡片使用JS-SDK的方式,總共分三步:
1. 引入weixin-js-sdk
import wx from 'weixin-js-sdk' // npm i -S weixin-js-sdk
這裡是在vue專案中的引入方式,其它方式可百度。
2.後端開發你喝茶
function getWxConfigData() {
// TODO 從後端請求並返回{ appId, timestamp, nonceStr, signature }
}
如果後端找不到 JS-SDK說明文件,你可以發給他。
3.貼上以下程式碼
async function setWxShareCard(shareConfig) {
let { imgUrl, desc, title, link } = shareConfig
let messageConfig = { imgUrl, desc, title, link }
let timelineConfig = { imgUrl, title, link } // 朋友圈沒有desc
let { appId, timestamp, nonceStr, signature } = await getWxConfigData()
wx.config({
debug: false,
appId,
timestamp,
nonceStr,
signature,
jsApiList: [
'updateAppMessageShareData', // 聊天訊息
'updateTimelineShareData' // 朋友圈
]
});
wx.ready(function () {
wx.updateAppMessageShareData(messageConfig)
wx.updateTimelineShareData(timelineConfig)
})
}
更多使用和配置,詳讀JS-SDK說明文件。
自定義QQ分享卡片
自定義QQ分享卡片使用自定義meta標籤的方式,設定效果如下:
<meta itemprop="name" content="我是標題">
<meta name="description" itemprop="description" content="我是描述">
<meta itemprop="image" content="我是圖片連結">
自定義的過程包括dom元素的增刪改查四大操作,程式碼如下:
// QQ通過動態設定meta自定義分享卡片
function setQQShareCard(shareConfig) {
let { title, desc, imgUrl } = shareConfig
let metaArr = [
{
attriKeyArr: ['itemprop'],
attriVal: 'name',
content: title
},
{
attriKeyArr: ['name', 'itemprop'],
attriVal: 'description',
content: desc
},
{
attriKeyArr: ['itemprop'],
attriVal: 'image',
content: imgUrl
}
]
metaArr.forEach(metaData => resetMeta(metaData))
}
function resetMeta(metaData) {
let { attriKeyArr, attriVal, content } = metaData
let headDom = document.getElementsByTagName('head')
let metaDom = document.querySelector(`meta[${attriKeyArr[0]}="${attriVal}"]`)
if (metaDom) headDom[0].removeChild(metaDom)
metaDom = document.createElement('meta')
attriKeyArr.forEach(attriKey => {
metaDom.setAttribute(attriKey, attriVal)
})
metaDom.content = content
headDom[0].appendChild(metaDom)
}
其中之所以有metaDom = document.createElement('meta')
這一步刪除的操作,是因為在實踐中發現:當需要修改的某個屬性的標籤已經存在時,再新增或直接修改沒有生效。本人胸懷似海,其中緣由並未深究。
自定義QQ和微信分享卡片
最後,把兩種方式直接整合,並設定預設值:
export const setShareCard = function (shareConfig) {
let { imgUrl, desc, title, link } = shareConfig
// 設定預設值
shareConfig = {
imgUrl: imgUrl || DEFAULT_SHARE_COVER,
desc: desc || DEFAULT_SHARE_DESC,
title: title || DEFAULT_SHARE_TITLE,
link: link || window.location.href
}
setQQShareCard(shareConfig)
setWxShareCard(shareConfig)
}
在需要自定義分享卡片的頁面,引入並使用這個方法即可。
參考文章
完整程式碼
相關文章
- 如何利用微狗仔實現微信自定義分享卡片連結
- 微信分享自定義實現
- 微信開發 分享功能 php,自定義微信分享功能PHP
- 微信自定義分享支援https(php)HTTPPHP
- 使用微信js-sdk自定義分享JS
- 微信自定義分享到朋友圈APIAPI
- 微信JSSDK遇見的坑--vue微信自定義分享JSVue
- 微信內 H5 頁面自定義分享H5
- 微信公眾號,H5自定義分享H5
- 微信網頁自定義分享踩坑日誌網頁
- 微信公眾號連結自定義分享總結
- Vue history 路由模式微信自定義分享總結Vue路由模式
- iOS 自定義卡片式控制元件:QiCardViewiOS控制元件View
- 微信php分享頁面自定義標題與內容PHP
- .Net微信網頁開發之使用微信JS-SDK自定義微信分享內容網頁JS
- iOS 自定義的卡片流互動控制元件iOS控制元件
- Flutter自定義實現神奇的卡片切換檢視Flutter
- 微信小程式自定義tabBar微信小程式tabBar
- 微信小程式 自定義tabbar微信小程式tabBar
- 微信小程式自定義事件微信小程式事件
- 手把手帶你使用JS-SDK自定義微信分享效果JS
- 自定義圓形ImageView(仿QQ頭像)View
- Android自定義View之高仿QQ健康AndroidView
- Android社交登入授權、分享SDK,支援微信、微博和QQAndroid
- 微信iOS客戶端升級核心對自定義分享的影響iOS客戶端
- PHP自定義實現微信分享朋友圈原始碼演示下載PHP原始碼
- 封裝QQ、微信、微博的第三方登入和分享封裝
- 微信小程式之『自定義toast』微信小程式AST
- 微信小程式-自定義placeholder顏色和樣式微信小程式
- vue單頁面應用在iOS版微信下自定義分享的問題VueiOS
- 記一次微信自定義分享debug均為true但是分享失敗的經歷
- iOS專案開發實戰——使用ShareSDK進行QQ和微信分享iOS
- Swift - 自定義Share分享頁面Swift
- iOS 自定義 AlertController 分享iOSController
- Android自定義View–仿QQ音樂歌詞AndroidView
- 微信小程式自定義導航欄微信小程式
- 記錄一次vue2.0(history模式)下微信自定義分享的坑Vue模式
- Android自定義View--仿QQ音樂歌詞AndroidView