日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用于页面访问,心跳监测的方法

發(fā)布時間:2024/5/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用于页面访问,心跳监测的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 頁面首次進(jìn)入是否觸發(fā)心跳

2 網(wǎng)頁tab切換時,切回來是否觸發(fā)心跳以及針對切回tab觸發(fā)心跳的標(biāo)識字段

3 瀏覽標(biāo)識和心跳標(biāo)識,用于區(qū)分首次進(jìn)入以及后續(xù)瀏覽時觸發(fā)的心跳上報

4 心跳上報間隔

/*** @param {string} page 必傳,頁面標(biāo)識 * @param {object} options 可選,一些配置項 見 defaultOptions*/ export default class HeartDance{constructor(page, options = {}){if(!page){throw new SyntaxError("page is required!")}const defaultOptions = {reportBrowse: true, // 是否上報瀏覽reportTabBack: true, // 切回tab 是否立刻上報心跳tabBackInfo:{key:'itemValue',value:'tag'}, // 切回tab 上報心跳標(biāo)識browse: 'browse', // 瀏覽標(biāo)識beat:'beat', // 心跳標(biāo)識heartDanceTime:30000, // 心跳間隔};this.danceInfo = {};this.page = page; // 當(dāng)前頁面標(biāo)識this.options = Object.keys(options).length === 0 ? defaultOptions : this.#mergeOptions(defaultOptions, options);}/*** 產(chǎn)生心跳監(jiān)聽* @param {*} fn 定時回調(diào)函數(shù)*/generateHeartDance(fn){if(!fn || typeof fn !== 'function'){throw new TypeError(`${fn} is not a function`);}const { reportBrowse, browse, beat, heartDanceTime, tabBackInfo} = this.options;const page = this.page;// 首次進(jìn)入頁面,上報瀏覽if(reportBrowse){fn(page, browse);}// 定時心跳if(!document.hidden){this.danceInfo.t = setInterval(() => {fn(page, beat);}, heartDanceTime)}this.danceInfo.listener = () => {if(!document.hidden){// tab切換回來顯示 立刻發(fā)一次心跳fn(page, beat,{[tabBackInfo.key]: tabBackInfo.value});// 新的定時心跳this.danceInfo.t = setInterval(() => {fn(page, beat);}, heartDanceTime)}else{// tab隱藏 清計時器clearInterval(this.danceInfo.t);}}document.addEventListener('visibilitychange', this.danceInfo.listener);}/*** 清除定時器 去掉監(jiān)聽事件*/removeHeartDance(){clearInterval(this.danceInfo.t);document.removeEventListener('visibilitychange', this.danceInfo.listener);}/*** 合并可選項參數(shù)* @param {*} source * @param {*} options * @returns */#mergeOptions(source, options) {for(const key in options){if(isObject(options[key])){source[key] = this.#mergeOptions(source[key], options[key]);}else{source[key] = options[key];}} function isObject(val){return val !== null && typeof val === 'object'}return source;}}

基本使用:

const heartDance = new HeartDance('pageName', { heartDanceTime: 10000 });heartDance.generateHeartDance(fn); // fn 是回調(diào),可以是接口,也可以是其它用于記錄的方法heartDance.removeHeartDance() // 在合適的時機(jī)清除監(jiān)聽,比如頁面離開或者卸載

總結(jié)

以上是生活随笔為你收集整理的用于页面访问,心跳监测的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。