以vue单页面项目为例
1、在路由的meta属性中,给需要记录访问时长的页面添加hasViewTime属性,以便全局处理页面,代码如下:
{
path: '路由地址',
name: '页面模块名称',
component: '页面模块',
meta: {
hasViewTime: true/false
}
}
2、在页面主入口文件App.vue文件中,记录访问页面的初始数据,同时初始化页面隐藏/关闭时监听事件,代码如下:
data () {
return {
systemEnv: '' // 移动设备类型
}
},
watch: {
$route (to, from) {
// 进入页面时,记录当前访问页面的浏览数据
if (to.meta.hasViewTime) {
localStorage.setItem('recordPageData', JSON.stringify({
viewId: '', // 访问记录id
name: to.name, // 访问页面名称标识
startTime: new Date().getTime() // 本地访问页面的开始时间(时间戳)
}))
}
}
},
mounted () {
let userAgent = window.navigator.userAgent
this.systemEnv = (userAgent.indexOf('iPhone') > -1 || userAgent.indexOf('iPad') > -1) ? 'iPhone' : 'Android'
// 页面访问时长统计
this.viewPageTimeFun()
},
methods: {
addViewTime () {
// 具体的记录页面访问时长的接口,就不附代码了
},
// 页面访问时长统计
viewPageTimeFun () {
// ******下次进入页面时,判断条件,发送请求,记录页面浏览数据******
let recordPageData = localStorage.getItem('recordPageData') ? JSON.parse(localStorage.getItem('recordPageData')) : null
if (recordPageData && recordPageData.viewId && recordPageData.viewTime) {
// 发送请求
this.addViewTime({
VIEW_ID: recordPageData.viewId,
VIEW_DURATION: recordPageData.viewTime
}).then(res => {
if (res.status === 'success') {