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

目錄
我們?yōu)槭颤N要關(guān)心自動(dòng)註銷?
步驟1:實(shí)現(xiàn)跟蹤邏輯
步驟2:跟蹤激活
步驟3:提高性能
獎(jiǎng)金:讓我們對(duì)此進(jìn)行複興!
那是一個(gè)包裹!
首頁(yè) web前端 css教學(xué) 檢測(cè)非活動(dòng)用戶

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

Apr 13, 2025 am 11:08 AM

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

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

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

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

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

我們?yōu)槭颤N要關(guān)心自動(dòng)註銷?

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

有些用戶可能會(huì)忘記註銷並使會(huì)話打開(kāi)。它發(fā)生了多少次?也許您的手機(jī)突然響了,或者您需要立即離開(kāi),將瀏覽器留在那裡。打開(kāi)用戶會(huì)話是危險(xiǎn)的,因?yàn)槠渌丝赡軙?huì)使用該會(huì)話來(lái)提取敏感數(shù)據(jù)。

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

下降一個(gè)級(jí)別,我們想做的就是計(jì)算用戶上次交互中傳遞的時(shí)間。如果那個(gè)時(shí)間段比我們的閾值更長(zhǎng),我們想解僱我們的無(wú)活動(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)的方法,但我們?cè)谌魏蔚胤蕉疾皇褂盟鼈儭?/p>

步驟2:跟蹤激活

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

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

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

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

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

步驟3:提高性能

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

讓UserActivityThrottLertimeout = null

然後,我們創(chuàng)建一種將創(chuàng)建我們的插座的方法。在該方法中,我們檢查了油門超時(shí)是否已經(jīng)存在,如果不存在,我們會(huì)創(chuàng)建一個(gè)將在特定時(shí)間段內(nèi)啟動(dòng)RESETUSERACTIVITY TIMET OUT。那是所有用戶活動(dòng)都不會(huì)再次觸發(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)金:讓我們對(duì)此進(jìn)行複興!

現(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ù)屬性。我們可以在下面的模板中直接訪問(wèn)數(shù)據(jù)屬性。

 
  <div>
    <p>用戶無(wú)效= {{iNInActive}} </p>
  </div>

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

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

我們還有一件事可以做。由於我們?cè)诖翱谏鲜褂贸瑫r(shí)並註冊(cè)事件聽(tīng)眾,因此自己清理一點(diǎn)總是一個(gè)好習(xí)慣。我們可以在另一個(gè)生命週期鉤子Beforedestroy中做到這一點(diǎn)。讓我們刪除我們?cè)]冊(cè)的所有偵聽(tīng)器,並在組件的生命週期結(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è)包裹!

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

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

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

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)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脫衣器

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整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

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

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

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

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

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

什麼是CSS計(jì)數(shù)器? 什麼是CSS計(jì)數(shù)器? Jun 19, 2025 am 12:34 AM

csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

CSS:何時(shí)重要(何時(shí)不)? CSS:何時(shí)重要(何時(shí)不)? Jun 19, 2025 am 12:27 AM

在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。 1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。 2.值中的十六進(jìn)制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無(wú)效。 3.URL區(qū)分大小寫,可能導(dǎo)致文件加載問(wèn)題。 4.自定義屬性(變量)區(qū)分大小寫,使用時(shí)需注意大小寫一致。

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

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

See all articles