頁面重新加載是一回事。有時,當我們認為它沒有反應或認為可用的新內容時,我們會刷新頁面。有時,我們只是在丹格網站和憤怒的狂歡中生氣,讓它知道我們不高興。
知道用戶何時刷新頁面會不會很高興嗎?不僅如此,還有多少次?這些數據可以幫助我們觸發一定數量的重新加載後觸發某種行為。
體育網站就是一個很好的例子。如果我想檢查正在進行的遊戲的分數,但分數沒有實時更新,那麼我可能會發現自己會刷新一堆。
我們的目標是將用戶擺脫這種習慣。由於實時得分更新,我們將使用我們的頁面刷新計數功能,讓人們知道刷新是不必要的。如果他們重新加載超過三次?我們將踢出他們的會議。那會向他們展示。
這是該概念的簡單演示。
讓我們一起重新創建它。但是在我們開始之前,在開始編碼之前,我們需要回答一些問題:
- 我們如何堅持用戶重新加載網站的次數?我們需要一個地方來保持用戶重新加載網站的次數(重新彙編),這個地方需要在重新加載之間持續該值 - LocalStorage聽起來像是一個很好的解決方案。
- 我們如何檢測用戶是重新加載網站還是在幾個小時後又回來?如果我們將重新充電量存儲在LocalStorage中,它將持續重新加載之間的值,但是它將保留該值,直到我們以編程方式刪除或清除瀏覽器存儲為止。這意味著,如果我們在幾個小時後回來,該網站仍然會記住上次重新彙編,並且可能會在第一次刷新後進行註銷而無需警告。我們希望避免這種情況,並允許用戶每次用戶在一段時間後返回兩次。最後一句話是問題的答案。我們需要存儲用戶離開網站的時間,然後在網站再次加載時檢查何時發生的時間。如果那個時間段不夠長,我們會激活重新加載計數邏輯。
- 我們怎麼知道用戶何時離開網站?要存儲這段時間,我們使用theNolload窗口事件並將該值存儲在LocalStorage中。
好的,現在我們有了答案,讓我們深入了解代碼。
步驟1:我們必須存儲最後一次重新加載時間
我們將使用ununload窗口事件存儲上次重新加載的時間。我們需要兩件事:(1)事件偵聽器,該偵聽器將收聽事件並觸發適當的方法,以及(2)我們的nunloadhandler方法。
首先,讓我們創建一個稱為initializerEloadCount的函數,該函數將使用窗口對像上的AddeventListener方法設置我們的事件偵聽器。
函數oniroctializerEeloAdcount(){ window.AddeventListener(“ theNunload”,totunloadHandler) }
然後,我們創建第二種方法,該方法將在離開網站之前被觸發。此方法將節省刷新在localstorage中發生的時間。
函數theunloadhandler(){ localstorage.setItem(“ lastunloadat”,Math.floor(date.now() / 1000)) window.removeEventListener(“ toferunload”,theunloadHandler); }
步驟2:我們需要一種處理和存儲重新加載計數的方法
既然我們有時間上次關閉,我們可以繼續並實施負責檢測和計算網站重新加載多少次的邏輯。我們需要一個變量來保留我們的重新負載,並告訴我們用戶重新加載網站的次數。
讓ReloadCount = null
然後,在我們的InitializerEeloAdcount功能中,我們需要做兩件事:
- 檢查我們是否已經在LocalStorage中存儲了一個重新彙編值,如果是的,請獲取該值並將其保存在我們的重新彙編中。如果值不存在,則意味著用戶首次加載了站點(或者至少沒有重新加載它)。在這種情況下,我們將重新匯總設置為零,並將該值保存到LocalStorage。
- 檢測是否重新加載站點,或者在更長的時間後返回站點。這是我們需要lastunloadat值的地方。要檢測該站點是否實際重新加載,我們需要比較站點加載(當前時間)的時間與lastunloadat值。如果這兩個發生在五秒鐘內(完全是任意的),則意味著用戶重新加載了站點,我們應該運行重新加載量邏輯。如果這兩個事件之間的時間段更長,我們將重置重新彙編值。
這樣,讓我們創建一個稱為CheckReload的新功能,並將該邏輯保留在此處。
功能CheckReload(){ if(localstorage.getItem(“ ReloAdcount”)){ reloadcount = parseint(localstorage.getItem(“ ReloAdcount”)) } 別的 { 重新充電= 0 localstorage.setItem(“ ReloadCount”,ReloadCount) } 如果 ( Math.floor(date.now() / 1000)-localstorage.getItem(“ lastunloadat”)<p>在此步驟中,我們需要的最後一個功能是負責當我們確認用戶重新加載網站時發生的方法。我們將該功能稱為onReLoDeTed,在其中,我們會增加重新彙編的值。如果用戶第三次刷新站點,我們將炸彈撥打並撥打我們的註銷邏輯。</p><pre rel="JavaScript">函數onReloAddetected(){ ReloadCount = ReloAdcount 1 localstorage.setItem(“ ReloadCount”,ReloadCount) if(reloAdcount === 3){ logout() } }
步驟3:“親愛的用戶,為什麼您不聽?!”
在此步驟中,儘管我們明確警告了停止這樣做,但我們將用戶重新加載站點重新加載到違反三個限制閾值的地步時實現了邏輯。
發生這種情況時,我們調用我們的API將用戶登錄,然後清理與重新加載計數邏輯相關的所有屬性。這將使用戶能夠返回並擁有重新加載的清潔帳戶。我們還可以將用戶重定向到某個地方,例如登錄屏幕。 (但是將它們發送到這裡不是很有趣嗎?)
函數註銷(params){ //註銷API調用 ResetreloAdcount() } 函數ResetreloAdcount(){ window.removeeventlistener(“ toferunload”,toferunloadHandler) localstorage.removeitem(“ lastunloadat”) localstorage.removeitem(“ ReloAdcount”); }
獎金:讓我們重新付款!
現在,我們已經實現了邏輯,讓我們看看如何基於此示例將該邏輯移至VUE網站:
首先,我們需要將所有變量移動到組件的數據中,這是所有反應性道具的壽命。
導出默認{ 數據() { 返回 { 重新載體:0, 警告:[...] } },,
然後,我們將所有功能移至方法。
// ... 方法: { totunloadhandler(){...}, checkReload(){...}, logout(){...}, OnReloAddetected(){...}, resetreloadcount(){...}, ritionizerEeloAdcount(){...} } // ...
由於我們使用VUE及其反應性系統,因此我們可以刪除所有直接的DOM操作(例如document.getElementById(“ app”)。innerHTML),並依賴於我們的警告信息數據屬性。為了顯示正確的警告消息,我們需要添加一個計算的屬性,該屬性每次更改我們的重新彙編時都會重新計算,以便我們可以從警告信息中返回字符串。
計算:{ 警告(){ 返回this.warningmessages [this.reloadcount]; } },,
然後,我們可以直接在組件模板中訪問計算屬性。
<div> <p> {{warningMessage}} </p> </div>
我們需要做的最後一件事是找到一個適當的地方激活預防邏輯。 VUE帶有組件生命週鉤,這些鉤子正是我們需要的,特別是創建的鉤子。讓我們放入它。
// ... 創建(){ this.InitializerEloAdcount(); },, // ...
好的。
總結
正是這樣,檢查併計算一個頁面刷新了多少次的邏輯。希望您喜歡這次旅行,您會發現這種解決方案有用,或者至少鼓舞人心做得更好。 ?
以上是將用戶擺脫過多習慣的一種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在本週的綜述中:Firefox獲得了類似鎖匠的力量,三星的Galaxy Store開始支持Progressive Web Apps,CSS Subgrid正在Firefox發貨

在本週的綜述中:Internet Explorer進入Edge,Google搜索控制台吹捧新的速度報告,而Firefox給出了Facebook&#039; s Notification

蓋茨比(Gatsby)進行了出色的處理和處理圖像。例如,它可以幫助您節省圖像優化的時間,因為您不必手動


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。