电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue 頁面監聽用戶預覽時間功能的實現代碼

瀏覽:51日期:2022-09-28 11:20:13

最近的業務中涉及到這樣一個需求,在線培訓的系統需要知道用戶對某個在線預覽的頁面追蹤用戶的預覽時長。初步我們首先想到借助 Vue 頁面的生命周期函數 mounted 和 destroyed,分別在其中加入開始計時和清除計時的邏輯,通過后臺的接口上報對應的培訓素材的時間數據,即可達到目的。

有了思路,我們就可以開始籌劃具體的代碼。

定義開始結束計時函數

在 data 中定義我們通過變量定義計時器,這樣可以通過 this.timer 隨處可訪問,便于后面銷毀頁面的時候清除它。

duration 為時長的計數變量,初始化為 0,可根據計時器的第二個時間間隔參數,決定單位是秒還是毫秒。

export default { data() { return { timer: null, duration: 0 } }, methods: { startTimer() { this.timer = setInterval(() => {console.log(’觀看時長: ’, this.duration)this.duration++ }, 1000) }, stopTimer() { clearInterval(this.timer) this.updateViewHistory() // 上報數據接口 }, updateViewHistory() { // 上報接口邏輯代碼 .... } }}

在 startTimer 函數中我們順便打印出 duration 變量來驗證顯示的時間是否正確。

如何以及在哪調用

定義好了開始結束的方法,我們就要開始想在哪調用它們。因為預覽的頁面內容不是唯一的,是根據素材的 id 來獲取詳情進行渲染的。如果我們把 startTimer 寫在 mounted 生命周期里,那么當我們訪問不同 id 的頁面的時候,無法正常切換我們想要的邏輯。

所以我選擇了通過監聽路由中的 id 參數,來達到在預覽不同頁面時候來切換開始和結束的邏輯

watch: { $route: { immediate: true, handler(to, from) {if (to.params.id) this.trainingId = to.params.idthis.startTimer() } } }

調用了開始計時的方法,終于我們可以在 console 的 log 中可以看到輸出了當前的時長

Vue 頁面監聽用戶預覽時間功能的實現代碼

然后也是最后一步,我們需要在頁面銷毀的時候調用 stopTimer 函數來清除定時器,上報數據。

由于我們的預覽頁面是通過 window.open 打開的獨立的標簽頁,所以這里是通過 destroyed 生命周期函數監聽。如果是通過路由方法進行的跳轉,那么我們需要在離開頁面的時候進行銷毀,方可再通過 destroyed 監聽到。

mounted() { window.addEventListener(’beforeunload’, e => this.beforeunloadHandler(e)) }, destroyed() { window.removeEventListener(’beforeunload’, e => this.beforeunloadHandler(e)) }

通過 window 的監聽器方法來來間接調用 stopTimer 方法

methods: { beforeunloadHandler (e) { this.stopTimer() }}

這里有人會問為什么不直接在 destroyed 中調用 stopTimer 方法,這樣可以分離出特有的邏輯,不與 destroyed 中其它的邏輯混在一起。提高代碼的可讀性和維護性。

在寫代碼的時候我們不僅要實現功能,還要想的更多一點,這就是普通和高手的區別。

到此這篇關于Vue 頁面監聽用戶預覽時間的文章就介紹到這了,更多相關Vue 監聽用戶預覽時間內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 威客电竞(vk·game)·电子竞技赛事官网| 深圳品牌设计公司-LOGO设计公司-VI设计公司-未壳创意 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 卧涛科技有限公司科技项目申报公司|高新技术企业申报|专利申请 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 硬齿面减速机[型号全],ZQ减速机-淄博久增机械 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | IPO咨询公司-IPO上市服务-细分市场研究-龙马咨询 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 浙江自考_浙江自学考试网 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! |