亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
我們?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ù)記錄等。

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

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

下降一個(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ì)觀察,我們剛剛提出的代碼就會(huì)存在嚴(yán)重的性能問題。每次用戶與應(yīng)用程序進(jìn)行交互時(shí),整個(gè)邏輯都會(huì)運(yùn)行。很好,但是仔細(xì)看。當(dāng)用戶與頁面交互時(shí),即使不是我們的跟蹤,也有一些類型的事件被釋放出大量次數(shù)。讓我們看一下Mousemove活動(dòng)。即使您只需觸摸鼠標(biāo),Mousemove事件也會(huì)被射擊數(shù)十次。這是一個(gè)真正的性能殺手。我們可以通過引入一個(gè)智能器來解決該問題,該節(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)金:讓我們對此進(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教程,用于創(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)。

解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異并合理使用廠商前綴。1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動(dòng)畫表現(xiàn)不同;2.查閱CanIuse確認(rèn)特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動(dòng)添加前綴;5.安裝PostCSS并配置browserslist指定目標(biāo)瀏覽器;6.構(gòu)建時(shí)自動(dòng)處理兼容性;7.老項(xiàng)目可用Modernizr檢測特性;8.不必追求所有瀏覽器一致,確

造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

設(shè)置訪問過鏈接的樣式能提升用戶體驗(yàn),尤其在內(nèi)容密集型網(wǎng)站中幫助用戶更好導(dǎo)航。1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出于隱私限制僅允許修改部分屬性;3.顏色選擇應(yīng)與整體風(fēng)格協(xié)調(diào),避免突兀;4.移動(dòng)端可能不顯示該效果,建議結(jié)合其他視覺提示如icon輔助標(biāo)識(shí)。

使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應(yīng)式調(diào)整,適配移動(dòng)端;3.易于動(dòng)畫化,可結(jié)合hover或JavaScript實(shí)現(xiàn)動(dòng)態(tài)效果;4.不影響布局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什么區(qū)別? 顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什么區(qū)別? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo??ntalpadding/margins—idealforinlinetextstyling

CSS繪畫API是什么? CSS繪畫API是什么? Jul 04, 2025 am 02:16 AM

thecsspaintingapienablesdemimageGenerationinCsssingJavascript.1.developersCreateApaintWorkletClassWithaPaint()method.2.theyregisteritviaregisterpaint()。3.thecustompAntFunctionSthenusitySthenusedisthenusedisthenusedIncerspropertieslikeBacknockforg-image-image.thisallows.thisallowsforderforderynamecvis

如何使用CSS創(chuàng)建響應(yīng)式圖像? 如何使用CSS創(chuàng)建響應(yīng)式圖像? Jul 15, 2025 am 01:10 AM

要使用CSS創(chuàng)建響應(yīng)式圖片,主要可通過以下方法實(shí)現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時(shí)自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控制圖片裁剪與焦點(diǎn)展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

什么是常見的CSS瀏覽器不一致? 什么是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計(jì)算方式、Flexbox和Grid布局支持程度及某些CSS屬性行為不一致。1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計(jì)算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測試并使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse并提供降級

See all articles