使用navigator.sendBeacon
方法记录Vue项目中的页面浏览时长的步骤如下:
1.在Vue组件中,使用mounted
钩子函数来设置进入页面的时间。
mounted() {
this.enterTime = new Date();
// 其他代码...
},
2.根据设备类型(iOS或其他设备),添加相应的事件监听器。如果是iOS设备,使用pagehide
事件监听器;否则,使用unload
事件监听器。
mounted() {
// 其他代码...
let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
if (isiOS) {
window.addEventListener("pagehide", this.recordEvent);
} else {
window.addEventListener("unload", this.recordEvent, false);
}
},
3.在recordEvent
方法中计算页面浏览时长,构造发送给服务器的数据,使用navigator.sendBeacon
方法发送数据。
methods: {
recordEvent() {
this.leaveTime = new Date();
let diff = this.leaveTime - this.enterTime;
let pageTime = Math.ceil(diff / 1000); // 毫秒转换为秒
let data = {
transId: sessionStorage.transId, // 分享id
pageTime, // 页面浏览时长
};
let params = new FormData();
params.append("sisEventInfoDto", JSON.stringify(data));
navigator.sendBeacon(`${API_URL}/common/event/recordEvent`, params);
},
},
4.在beforeDestroy
钩子函数中调用recordEvent
方法,以确保在组件销毁之前记录最后的页面浏览时长。
beforeDestroy() {
this.recordEvent();
},
以上代码示例中,API_URL
是记录事件的接口URL,你需要根据实际情况进行替换。