支付寶小程序從手動(dòng)埋點(diǎn)到自動(dòng)埋點(diǎn)的實(shí)現(xiàn)過(guò)程
手動(dòng)埋點(diǎn)
現(xiàn)在小程序埋點(diǎn)需要手動(dòng)添加埋點(diǎn)事件觸發(fā),
// axml
<view onTap="track" data-ilog="xxx">這只是一個(gè)展示view</view>
//js
track(e) {
...業(yè)務(wù)代碼
// 埋點(diǎn)代碼
app.sentEventCustom("click", this, this.query, e.target.dataset.ilog);
}會(huì)有以下幾個(gè)問(wèn)題:
- 業(yè)務(wù)代碼和埋點(diǎn)代碼寫在一起,影響代碼的閱讀體驗(yàn)
- 埋點(diǎn)代碼散落在各個(gè)地方,不方便管理。比如運(yùn)營(yíng)要增加刪除埋點(diǎn)時(shí),統(tǒng)一管理會(huì)更方便
需要埋點(diǎn)的場(chǎng)景
1.普通點(diǎn)擊事件
// axml
<view onTap="track" class="ilog" data-ilog="xxx">這只是一個(gè)展示view</view>
//js
track(e) {
// 埋點(diǎn)代碼
report()
}- 下拉刷新時(shí),沒(méi)有觸發(fā)點(diǎn)擊,可以選擇對(duì)該事件進(jìn)行埋點(diǎn)
/**
* @description: 下拉刷新
* @param {*}
* @return {*}
*/
onPullDownRefresh() {
// 埋點(diǎn)代碼
report()
},- 埋點(diǎn)要在promise事件上
//js
async onAuthPhone() {
await app.getUserPhone()
// 埋點(diǎn)代碼
report()
}總結(jié):我們要實(shí)現(xiàn)頁(yè)面元素點(diǎn)擊時(shí)觸發(fā)埋點(diǎn),也要能在事件執(zhí)行后觸發(fā)埋點(diǎn)
自動(dòng)埋點(diǎn)
1、通過(guò)事件冒泡監(jiān)聽(tīng)元素是否被點(diǎn)擊
方案一:在axml最外層綁定catchTap事件,獲取點(diǎn)擊元素的ilog信息
- 缺點(diǎn):捕獲的目標(biāo)元素為最里層,該層不一定添加了ilog
方案二:在需要發(fā)送埋點(diǎn)的元素增加樣式類'.ilog',點(diǎn)擊時(shí)最外層catchTap獲取點(diǎn)擊位置的X,Y軸值,同時(shí)通過(guò)queryselectAll獲取'.ilog'元素的位置,判斷點(diǎn)擊位置是否在'.ilog'內(nèi),如果是的話,發(fā)送埋點(diǎn)信息。如下圖:

2、擴(kuò)展Page方法
由于最外層綁定catchTap事件方法需要在Page中定義以供wxml調(diào)用,如果每個(gè)頁(yè)面手動(dòng)編寫就過(guò)于繁瑣了,可以通過(guò)改寫Page來(lái)實(shí)現(xiàn)自動(dòng)擴(kuò)展,代碼如下
// 記錄原Page方法
const originPage = Page;
// 重寫Page方法
Page = (page) => {
// 給page對(duì)象注入三個(gè)方法
page.elementTracker = function() {}
page.methodTracker = function() {}
page.isClickTrackArea = function() {}
return originPage(page);
};3、對(duì)頁(yè)面函數(shù)埋點(diǎn)
有些場(chǎng)景我們除了對(duì)頁(yè)面元素點(diǎn)擊埋點(diǎn),還要對(duì)頁(yè)面函數(shù)進(jìn)行埋點(diǎn),例如用戶下拉刷新的時(shí)候,可以對(duì)原方法進(jìn)行包裝,插入埋點(diǎn)代碼,方案和第二點(diǎn)差不多。
const originPage = Page;
// 重寫Page方法
Page = (page) => {
// 給onShow方法插入埋點(diǎn)
const originMethod = page['onShow'];
page['onShow'] = function() {
report() // 記錄埋點(diǎn)
return originMethod();
}
return originPage(page);
};4、通過(guò)配置表設(shè)置埋點(diǎn)
上面介紹了頁(yè)面元素和函數(shù)的埋點(diǎn)方式,下面講一下如何管理埋點(diǎn)信息解決代碼入侵問(wèn)題,可以把埋點(diǎn)信息以配置表的方式聲明,以后還可以做到動(dòng)態(tài)配置,在服務(wù)端配置完畢下發(fā)到客戶端。
const tracks = {
path: 'pages/film/detail',
elementTracks: [
{
element: '.buy-now', // 聲明需要監(jiān)聽(tīng)的元素
dataKeys: ['film.filmId'], // 聲明需要獲取Data下的film對(duì)象下的filmId字段
},
],
methodTracks: [
{
method: 'toBannerDetail', // 聲明需要監(jiān)聽(tīng)的函數(shù)
dataKeys: ['imgUrls'], // 聲明需要獲取Data下的imgUrls數(shù)據(jù)
},
],
};總結(jié)
到此這篇關(guān)于支付寶小程序從手動(dòng)埋點(diǎn)到自動(dòng)埋點(diǎn)的文章就介紹到這了,更多相關(guān)支付寶小程序自動(dòng)埋點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tsc性能優(yōu)化Project References使用詳解
這篇文章主要為大家介紹了tsc性能優(yōu)化Project References使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this
這篇文章主要介紹了 深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this,arguments是一個(gè)類數(shù)組結(jié)構(gòu),它保存了調(diào)用時(shí)傳遞給函數(shù)的所有實(shí)參;this是函數(shù)執(zhí)行時(shí)的上下文對(duì)象, 這個(gè)對(duì)象有些讓人感到困惑的行為。 下面分別對(duì)他們進(jìn)行討論。,需要的朋友可以參考下2019-06-06
JS 在指定數(shù)組中隨機(jī)取出N個(gè)不重復(fù)的數(shù)據(jù)
這篇文章主要介紹了JS 在指定數(shù)組中隨機(jī)取出N個(gè)不重復(fù)數(shù)據(jù)的方法,需要的朋友可以參考下2014-06-06
一個(gè)簡(jiǎn)易時(shí)鐘效果js實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)易時(shí)鐘效果js實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
24個(gè)解決實(shí)際問(wèn)題的ES6代碼片段(小結(jié))
這篇文章主要介紹了24個(gè)解決實(shí)際問(wèn)題的ES6代碼片段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
ElementUI 的 Tree 組件的基本使用實(shí)戰(zhàn)教程
這篇文章主要介紹了ElementUI 的 Tree 組件的基本使用實(shí)戰(zhàn)教程,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
uniapp使用uni-imei插件獲取手機(jī)的設(shè)備號(hào)
uniapp框架是一款開(kāi)發(fā)跨平臺(tái)應(yīng)用的工具,它支持iOS、Android以及Web等多個(gè)平臺(tái),在這些平臺(tái)中,uniapp可以訪問(wèn)某些設(shè)備的硬件信息,這篇文章主要給大家介紹了關(guān)于uniapp使用uni-imei插件獲取手機(jī)設(shè)備號(hào)的相關(guān)資料,需要的朋友可以參考下2024-01-01
用CSS+JS實(shí)現(xiàn)的進(jìn)度條效果效果
用CSS+JS實(shí)現(xiàn)的進(jìn)度條效果效果...2007-06-06

