自定義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)
}
在需要自定義分享卡片的頁面,引入並使用這個方法即可。
參考文章
完整程式碼
相關文章
- 如何利用微狗仔實現微信自定義分享卡片連結
- 微信自定義分享支援https(php)HTTPPHP
- 使用微信js-sdk自定義分享JS
- 微信JSSDK遇見的坑--vue微信自定義分享JSVue
- 微信網頁自定義分享踩坑日誌網頁
- 微信公眾號,H5自定義分享H5
- 微信內 H5 頁面自定義分享H5
- 微信公眾號連結自定義分享總結
- .Net微信網頁開發之使用微信JS-SDK自定義微信分享內容網頁JS
- 微信小程式 自定義tabbar微信小程式tabBar
- 微信小程式自定義tabBar微信小程式tabBar
- uniapp自定義卡片輪播圖APP
- 封裝QQ、微信、微博的第三方登入和分享封裝
- 微信小程式-自定義placeholder顏色和樣式微信小程式
- 手把手帶你使用JS-SDK自定義微信分享效果JS
- Android 無需申請key直接呼叫微信/QQ/微博分享Android
- 微信小程式自定義導航欄微信小程式
- 微信開發之自定義元件(Toast)元件AST
- 記一次微信自定義分享debug均為true但是分享失敗的經歷
- vue單頁面應用在iOS版微信下自定義分享的問題VueiOS
- 微信小程式-自定義下拉重新整理微信小程式
- 微信小程式自定義元件-城市選擇微信小程式元件
- 微信小程式 vue 自定義日曆 sku微信小程式Vue
- 微信小程式--自定義radio元件樣式微信小程式元件
- 【微信小程式】常用元件及自定義元件微信小程式元件
- 微信小程式下拉選單自定義元件微信小程式元件
- iOS 自定義卡片式控制元件:QiCardViewiOS控制元件View
- Android 仿微信, QQ 裁剪Android
- 文章詳情頁面需要分享到第三方,包括qq、qq空間、微博、微信。
- 記錄一次vue2.0(history模式)下微信自定義分享的坑Vue模式
- Vue history 路由模式微信自定義分享總結Vue路由模式
- 微信、三星合作推出“負一屏卡片”和"微信小程式側屏"功能微信小程式
- 微信小程式自定義元件實現 tabBar、navBar微信小程式元件tabBar
- TNW-微信公眾號自定義選單TNW
- iOS 自定義的卡片流互動控制元件iOS控制元件
- 微信公眾號開發5-自定義選單-微信開發phpPHP
- 微信小程式自定義元件-可清除的input元件微信小程式元件
- 微信小程式自定義導航欄適配指南微信小程式