国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
我們?yōu)槭裁匆P(guān)心自動(dòng)注銷?
步驟1:實(shí)現(xiàn)跟蹤邏輯
步驟2:跟蹤激活
步驟3:提高性能
獎(jiǎng)金:讓我們對此進(jìn)行復(fù)興!
那是一個(gè)包裹!
首頁 web前端 css教程 檢測非活動(dòng)用戶

檢測非活動(dòng)用戶

Apr 13, 2025 am 11:08 AM

檢測非活動(dòng)用戶

在大多數(shù)情況下,您并不真正在乎用戶是否積極參與或暫時(shí)非活動(dòng)。不活動(dòng)的意思是,也許他們起床喝水,或者更有可能更改了標(biāo)簽,以做其他事情。但是,在跟蹤用戶活動(dòng)和檢測非活動(dòng)性時(shí),存在一些情況。

當(dāng)您可能需要該功能時(shí),讓我們考慮幾個(gè)示例:

  • 跟蹤文章閱讀時(shí)間
  • 自動(dòng)保存表格或文檔
  • 自動(dòng)暫停游戲
  • 隱藏視頻播放器控件
  • 出于安全原因自動(dòng)登錄用戶

我最近遇到了一個(gè)涉及最后一個(gè)示例的功能,出于安全原因,自動(dòng)記錄了非活動(dòng)用戶。

我們?yōu)槭裁匆P(guān)心自動(dòng)注銷?

許多應(yīng)用程序使用戶可以訪問其數(shù)量的個(gè)人數(shù)據(jù)。根據(jù)應(yīng)用程序的目的,該數(shù)據(jù)的數(shù)量和值可能不同。它可能僅是用戶的名稱,但也可能是更敏感的數(shù)據(jù),例如醫(yī)療記錄,財(cái)務(wù)記錄等。

有些用戶可能會忘記注銷并使會話打開。它發(fā)生了多少次?也許您的手機(jī)突然響了,或者您需要立即離開,將瀏覽器留在那里。打開用戶會話是危險(xiǎn)的,因?yàn)槠渌丝赡軙褂迷摃拋硖崛∶舾袛?shù)據(jù)。

解決此問題的一種方法是跟蹤如果用戶在一定時(shí)間內(nèi)與應(yīng)用程序進(jìn)行交互,則在超過該時(shí)間的時(shí)間內(nèi)觸發(fā)注銷。您可能需要顯示一個(gè)彈出窗口,或者可能會警告用戶注銷即將發(fā)生的計(jì)時(shí)器?;蛘撸?dāng)檢測到不活動(dòng)用戶時(shí),您可能會立即注銷。

下降一個(gè)級別,我們想做的就是計(jì)算用戶上次交互中傳遞的時(shí)間。如果那個(gè)時(shí)間段比我們的閾值更長,我們想解雇我們的無活動(dòng)處理程序。如果用戶在破壞閾值之前執(zhí)行操作,我們將重置計(jì)數(shù)器并重新計(jì)數(shù)。

本文將展示如何基于此示例實(shí)現(xiàn)此類活動(dòng)跟蹤邏輯。

步驟1:實(shí)現(xiàn)跟蹤邏輯

讓我們實(shí)現(xiàn)兩個(gè)功能。第一個(gè)將負(fù)責(zé)每次用戶與應(yīng)用程序進(jìn)行交互時(shí)重置我們的計(jì)時(shí)器,第二個(gè)將處理用戶變得不活動(dòng)時(shí)的情況:

  • RESETUSERACTIVITIONTIMETOUT - 這將是我們的方法,負(fù)責(zé)清除現(xiàn)有超時(shí)并每次用戶與應(yīng)用程序進(jìn)行交互時(shí)啟動(dòng)新的超時(shí)。
  • INTACTIVEUSERACTION - 這將是我們的方法在用戶活動(dòng)超時(shí)用完時(shí)被觸發(fā)的方法。
令UserActivityTimeOut = null;

函數(shù)restuseractivitivitivitivity timeout(){
  clearTimeOut(userActivityTimeout);
  userActivityTimeout = settimeout(()=> {
    intacriveuseraction();
  },InActive_user_time_threshold);
}

函數(shù)intactiveUserAction(){
  //注銷邏輯
}

好的,因此我們有負(fù)責(zé)跟蹤活動(dòng)的方法,但我們在任何地方都不使用它們。

步驟2:跟蹤激活

現(xiàn)在,我們需要實(shí)現(xiàn)負(fù)責(zé)激活跟蹤的方法。在這些方法中,我們添加了事件偵聽器,這些偵聽器將在檢測到事件時(shí)調(diào)用我們的repetuseractivityTime Out方法。您可以根據(jù)需要收聽盡可能多的事件,但是為簡單起見,我們將該列表限制在一些最常見的列表中。

函數(shù)activateactivityTracker(){
  window.addeventListener(“ mousemove”,repetuseractivityTimeout);
  window.AddeventListener(“ scroll”,repetuseractivityTimeout);
  window.AddeventListener(“ keydown”,repetuseractivitivitivitivity timeout);
  window.addeventListener(“ ressize”,repetuseractivityTimeout);
}

就是這樣。我們的用戶跟蹤已準(zhǔn)備就緒。我們唯一需要做的就是在頁面加載上調(diào)用ActivateActivityTracker。

我們可以這樣留下來,但是如果您仔細(xì)觀察,我們剛剛提出的代碼就會存在嚴(yán)重的性能問題。每次用戶與應(yīng)用程序進(jìn)行交互時(shí),整個(gè)邏輯都會運(yùn)行。很好,但是仔細(xì)看。當(dāng)用戶與頁面交互時(shí),即使不是我們的跟蹤,也有一些類型的事件被釋放出大量次數(shù)。讓我們看一下Mousemove活動(dòng)。即使您只需觸摸鼠標(biāo),Mousemove事件也會被射擊數(shù)十次。這是一個(gè)真正的性能殺手。我們可以通過引入一個(gè)智能器來解決該問題,該節(jié)能器將允許每個(gè)指定時(shí)間段僅觸發(fā)一次用戶活動(dòng)邏輯。

讓我們現(xiàn)在就這樣做。

步驟3:提高性能

首先,我們需要添加另一個(gè)變量,該變量將繼續(xù)參考我們的油門超時(shí)。

讓UserActivityThrottLertimeout = null

然后,我們創(chuàng)建一種將創(chuàng)建我們的插座的方法。在該方法中,我們檢查了油門超時(shí)是否已經(jīng)存在,如果不存在,我們會創(chuàng)建一個(gè)將在特定時(shí)間段內(nèi)啟動(dòng)RESETUSERACTIVITY TIMET OUT。那是所有用戶活動(dòng)都不會再次觸發(fā)跟蹤邏輯的時(shí)期。在那段時(shí)間之后,油門超時(shí)已清除,允許下一個(gè)交互重置活動(dòng)跟蹤器。

 userActivityThrottler(){
  如果(!useractivityThrottLertimeout){
    userActivityThrottlertimeout = settimeout(()=> {
      restuseractivitivitivityTimeOut();

      ClearTimeOut(userActivityThrottLertimeout);
      userActivityThrottLertimeout = null;
    },user_activity_throttler_time);
  }
}

我們剛剛創(chuàng)建了一種新方法,該方法應(yīng)在用戶互動(dòng)時(shí)觸發(fā),因此我們需要記住將事件處理程序從我們的激活邏輯中從repentuseractivityTimeout到UserActivityThrottler更改。

 activateactivityTracker(){
  window.AddeventListener(“ Mousemove”,UserActivityThrottler);
  // ...
}

獎(jiǎng)金:讓我們對此進(jìn)行復(fù)興!

現(xiàn)在,我們已經(jīng)實(shí)現(xiàn)了我們的活動(dòng)跟蹤邏輯,讓我們看看如何將邏輯移至使用VUE構(gòu)建的應(yīng)用程序。我們將基于此示例的解釋。

首先,我們需要將所有變量移動(dòng)到組件的數(shù)據(jù)中,這是所有反應(yīng)性道具都活的地方。

導(dǎo)出默認(rèn){
  數(shù)據(jù)() {
    返回 {
      ISINACTIVE:false,
      userActivityThrottlertimeout:null,
      userActivityTimeout:null
    };
  },,
// ...

然后,我們將所有功能移動(dòng)到方法:

 // ...
  方法: {
    activateactivityTracker(){...},
    restuseractivitivitivitivity timeout(){...},
    useractivityThrottler(){...},
    intactiveuseraction(){...}
  },,
// ...

由于我們正在使用VUE及其反應(yīng)性系統(tǒng),因此我們可以刪除所有直接的DOM操作i。(即document.getElementById(“ app”)。innerhtml),并依賴于我們的ISINARTIVE數(shù)據(jù)屬性。我們可以在下面的模板中直接訪問數(shù)據(jù)屬性。

 
  <div>
    <p>用戶無效= {{iNInActive}} </p>
  </div>

我們需要做的最后一件事是找到一個(gè)適當(dāng)?shù)牡胤郊せ罡欉壿嫛?Vue帶有組件生命周期掛鉤,這正是我們需要的 - 特別是BeforeMount鉤子。因此,讓我們把它放在那里。

 // ...
  beforemount(){
    this.activateactivityTracker();
  },,
// ...

我們還有一件事可以做。由于我們在窗口上使用超時(shí)并注冊事件聽眾,因此自己清理一點(diǎn)總是一個(gè)好習(xí)慣。我們可以在另一個(gè)生命周期鉤子Beforedestroy中做到這一點(diǎn)。讓我們刪除我們注冊的所有偵聽器,并在組件的生命周期結(jié)束時(shí)清除所有超時(shí)。

 // ...
  beforedestroy(){
    Window.RemoveEventListener(“ Mousemove”,this.useractivityThrottler);
    window.removeEventListener(“ scroll”,this.useractivityThrottler);
    window.removeeventlistener(“ keydown”,this.useractivityThrottler);
    window.removeEventListener(“ resize”,this.useractivityThrottler);
  
    clearTimeOut(this.useractivityTimeOut);
    clearTimeOut(this.useractivityThrottLertimeout);
  }
// ...

那是一個(gè)包裹!

該示例純粹集中于檢測用戶與應(yīng)用程序的交互,對其反應(yīng)并在特定時(shí)間段內(nèi)未檢測到相互作用時(shí)發(fā)射方法。我希望這個(gè)示例盡可能地通用,因此這就是為什么我將檢測到的不活動(dòng)用戶的實(shí)現(xiàn)留給您。

希望您能發(fā)現(xiàn)此解決方案對您的項(xiàng)目有用!

以上是檢測非活動(dòng)用戶的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

什么是'渲染障礙CSS”? 什么是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因?yàn)闉g覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。1.提取關(guān)鍵CSS并內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合并CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

什么是AutoPrefixer,它如何工作? 什么是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個(gè)根據(jù)目標(biāo)瀏覽器范圍自動(dòng)為CSS屬性添加廠商前綴的工具。1.它解決了手動(dòng)維護(hù)前綴易出錯(cuò)的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項(xiàng)有不手動(dòng)加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

什么是圓錐級函數(shù)? 什么是圓錐級函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

CSS教程,用于創(chuàng)建粘性標(biāo)頭或頁腳 CSS教程,用于創(chuàng)建粘性標(biāo)頭或頁腳 Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

CSS自定義屬性的范圍是什么? CSS自定義屬性的范圍是什么? Jun 25, 2025 am 12:16 AM

CSS自定義屬性的作用域取決于其聲明的上下文,全局變量通常定義在:root中,而局部變量則定義在特定選擇器內(nèi),以便組件化和隔離樣式。例如,定義在.card類中的變量僅對匹配該類的元素及其子元素可用。最佳實(shí)踐包括:1.使用:root定義全局變量如主題色;2.在組件內(nèi)部定義局部變量以實(shí)現(xiàn)封裝;3.避免重復(fù)聲明同一變量;4.注意選擇器特異性可能引發(fā)的覆蓋問題。此外,CSS變量區(qū)分大小寫,且應(yīng)在使用前定義以避免錯(cuò)誤。若變量未定義或引用失敗,則會采用回退值或默認(rèn)值initial。調(diào)試時(shí)可通過瀏覽器開發(fā)者工

CSS教程專注于移動(dòng)優(yōu)先設(shè)計(jì) CSS教程專注于移動(dòng)優(yōu)先設(shè)計(jì) Jul 02, 2025 am 12:52 AM

Mobile-firstCSSdesignrequiressettingtheviewportmetatag,usingrelativeunits,stylingfromsmallscreensup,optimizingtypographyandtouchtargets.First,addtocontrolscaling.Second,use%,em,orreminsteadofpixelsforflexiblelayouts.Third,writebasestylesformobile,the

如何創(chuàng)建本質(zhì)上響應(yīng)的網(wǎng)格布局? 如何創(chuàng)建本質(zhì)上響應(yīng)的網(wǎng)格布局? Jul 02, 2025 am 01:19 AM

要?jiǎng)?chuàng)建內(nèi)在響應(yīng)式網(wǎng)格布局,核心方法是使用CSSGrid的repeat(auto-fit,minmax())模式;1.設(shè)置grid-template-columns:repeat(auto-fit,minmax(200px,1fr))讓瀏覽器自動(dòng)調(diào)整列數(shù)并限制每列最小和最大寬度;2.使用gap控制格子間距;3.容器應(yīng)設(shè)為相對單位如width:100%、配合box-sizing:border-box避免寬度計(jì)算錯(cuò)誤并用margin:auto居中;4.可選設(shè)置行高與內(nèi)容對齊方式提升視覺一致性,如row

CSS教程,用于創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 CSS教程,用于創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 Jul 07, 2025 am 12:07 AM

創(chuàng)建CSS加載旋轉(zhuǎn)器的方法有三種:1.使用邊框的基本旋轉(zhuǎn)器,通過HTML和CSS實(shí)現(xiàn)簡單動(dòng)畫;2.使用多個(gè)點(diǎn)的自定義旋轉(zhuǎn)器,通過不同延遲時(shí)間實(shí)現(xiàn)跳動(dòng)效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強(qiáng)調(diào)了設(shè)計(jì)細(xì)節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗(yàn)。

See all articles