百度统计
百度统计访问地址
https://tongji.baidu.com/web/10000370440/homepage/index
创建项目及获取项目标识
1、创建分析网站
在管理页面中点击新增网站,填写完信息
2、获取代码
得到如下代码:
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9a7fcafecd619f300542b1185aa7a723";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
百度统计接入代码
1、需要在main.ts代码中添加如下代码
问号后面为百度统计针对项目的唯一标识
//百度统计接入代码
let win: any = window
var _hmt: any = _hmt || [];
win._hmt = _hmt; // 修改为window 全局变量
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9a7fcafecd619f300542b1185aa7a723";
var s = document.getElementsByTagName("script")[0];
// @ts-ignore
s.parentNode.insertBefore(hm, s);
})();
2、页面跳转添加埋点
利用vue中的router进行跳转之前埋点
routers中是需要埋点的页面
// // 加入百度统计
router.beforeEach((to: { name: any; path: any }, from: any, next: () => void) => {
if (to.path) {
if (win._hmt) {
let value = routes[to.name].label;
win._hmt.push([‘_trackPageview’, ‘/’+value])
}
}
next()
})
// @ts-ignore
const routers: any = {
‘Home’: {label: ‘【首页】’},
‘Detail’: {label: ‘【文档详情】页-发送视角’},
‘Send’: {label: ‘【发送资料】-发邮件页’},
‘Record’: {label: ‘【发送记录】页’},
‘Email’: {label: ‘【记录详情】页’},
‘Sdt’: {label: ‘【文档详情】页-查看视角’},
‘EmailOut’: {label: ‘首页’},
‘OpenDetail’: {label: ‘【记录详情】页’}
}
3、事件添加埋点
统一埋点函数
// 百度统计统计平台埋点
// category: 必选 String => 要监控的目标的类型名称 => 不填、填"-“的事件会被抛弃
// action: 必选 String => 用户跟网页进行交互的动作名称=> 不填、填”-“的事件会被抛弃
// opt_label: 可选 String => 事件的一些额外信息 => 不填、填”-"代表此项为空
// opt_value: 可选 Number => 跟事件相关的数值
export function setSpot(category, action, opt_value) {
if(_hmt){
console.log(百度统计埋点:category:
c
a
t
e
g
o
r
y
a
c
t
i
o
n
:
{category} action:
categoryaction:{action} opt_value:${opt_value})
_hmt.push([‘_trackEvent’, category, action, opt_value]);
}
}
3.1、通过指令进行埋点
添加vue指令:点击指令tap;输入指令 inputEvent,拖拽指令dragContent
/**
*
* 点击事件
/
const myGesture = {};
// eslint-disable-next-line
function gestrue(Vue, options) {
let interval;
Vue.directive('tap', {
// 当被绑定的元素插入到 DOM 中时……
bind(el, binding, vNode) {
el.addEventListener('click', (event) => {
if (typeof binding.arg !== "object") {
setSpot(indexArr['key_' + binding.arg].title, 'click', indexArr['key_' + binding.arg].label)
} else {
setSpot(productList[binding.arg.label].title, 'click', productList[binding.arg.label].label)
}
if (typeof binding.value == 'function') {
binding.value();
}
});
}
});
Vue.directive('inputEvent', {
// 当被绑定的元素插入到 DOM 中时……
bind(el, binding, vNode) {
el.addEventListener('input', (event) => {
if (interval) {
clearTimeout(interval)
}
interval = setTimeout(() => {
setSpot(indexArr['key_' + binding.arg].title, 'input', indexArr['key_' + binding.arg].label)
if (typeof binding.value == 'function') {
binding.value();
}
}, 200)
});
}
});
Vue.directive('dragContent', {
// 当被绑定的元素插入到 DOM 中时……
bind(el, binding, vNode) {
el.addEventListener('dragstart', (event) => {
setSpot(indexArr['key_' + binding.arg].title, 'dragstart', indexArr['key_' + binding.arg].label)
if (typeof binding.value == 'function') {
binding.value();
}
});
}
});
}
myGesture.install = gestrue;
/*
* 点击事件埋点数组
*/
const indexArr = {
key_1: {title: '首页', label: '【首页】-搜索框'}
}
const productList = {
"全部": {title: '首页', label: '【首页】-产品线全部'},
"交换产品": {title: '首页', label: '【首页】-交换产品'}
}
3.2、指令埋点使用方式
在需要埋点的按钮添加指令即可
冒号后面的参数可以传入指令函数中通过binding.arg来获取
栗子:
<el-button v-tap:19 v-else type="primary" icon="el-icon-s-promotion" @click="toggleSendBox"></el-button>
TakingData
去官网注册添加一个网页应用
在应用基础信息页面可以获取应用id和应用名称,之后还需要去版本管理获取版本号
获取完基础信息之后需要在 vue 项目的index.html界面添加如下代码
<script src="http://sdk.talkingdata.com/app/h5/v1?appid=22C977DB613D4FFD951ED9E87559B03E&vn=闪电兔pro&vc=
H5+APP+v1.0.5">
vn代码应用名,vc代表应用版本id
这边引入td统计接口,新增了一个js函数
// talkingData统计平台埋点
export function setSpot(sendMsg, logMsg) {
try {
console.log(logMsg)
window.TDAPP.onEvent(sendMsg)
return true
} catch (err) {
console.log(logMsg + '=>err', err)
return false
}
}
使用案例,导入js,使用到对应事件中
import {setSpot} from ‘…/util/tdUtils’
setSpot(“搜索内容:”+this.question,“点击搜索按钮”)