利用 setInterval 確定用戶的動作是否停止

来源:http://www.cnblogs.com/lightnull/archive/2016/12/11/6159796.html
-Advertisement-
Play Games

最近遇到一個問題,對於某一個持續的動作,希望能夠知曉用戶何時停止這個動作, 比如說 我們通過註冊onresize事件,去監聽瀏覽器視窗變化的事件,在這個事件裡面,我們可能要執行大量的計算去確定視窗變化後的一個佈局 可惜的是,onresize事件,在視窗大小發生改變的時候就會觸發一次,像筆者這種喜歡拖 ...


最近遇到一個問題,對於某一個持續的動作,希望能夠知曉用戶何時停止這個動作,

比如說 我們通過註冊onresize事件,去監聽瀏覽器視窗變化的事件,在這個事件裡面,我們可能要執行大量的計算去確定視窗變化後的一個佈局

可惜的是,onresize事件,在視窗大小發生改變的時候就會觸發一次,像筆者這種喜歡拖來拖去的多動症患者,就會讓我們可憐的瀏覽器君,不停的去計算,去渲染,

這時候,瀏覽器君 是多麼迫切的想知道筆者什麼時候 結束這改變視窗的動作啊!

要是我們有一個狀態變數 status ,true 代表正在操作。false代表沒有操作。

那麼我們就巧妙的把判斷用戶的動作是否結束的問題轉換成去詢問某個變數的值是什麼了啊(真是機智的boy)。

 1 function test() {
 2     var isFree = true,isActive = true; 
 3     $(window).on('resize',function() {
 4         isActive = true; 
 5         if (!isFree) { 
 6             return;
 7         }
 8         isFree = false; //保證每次只會執行一次
 9         
10         function resizeAction(){} //邏輯代碼
11         
12         var n = 0;
13         var timer = setInterval(function(){
14             if (isActive) { //判斷事件是否被執行
15                 n = 0;
16                 isActive = false
17             } else if (++n > 2) { //當有300ms沒有操作的時候,就認為用戶已經停止行為了
18                 resizeAction();
19                 
20                 isFree = true; //狀態重置
21                 clearInterval(timer);
22             }
23         }, 100);
24         
25     });
26 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、數據類型 5種基本數據類型:Null/Undefined/String/Boolean/Number 1種複雜數據類型:Object 二、數據類型檢測 傳送門《幾種JS數據類型方式及其局限性》 1、typeof 2、instanceof/constructor 3、Object.prototyp ...
  • 一、jQuery插件支持的轉換方式 二、瀏覽器支持的轉換方式(Firefox,Chrome,Opera,Safair,IE9,IE8) 註意:由於ie8(相容模式),ie7和ie6沒有JSON對象,需要使用JSON官方的方式,引入json.js。 三、javascript支持的轉換方式 註意:ie8 ...
  • 在jQuery之焦點圖轉換-左右的基礎上,將jQuery代碼改成js原生,並添加定時器(setInterval()和clearInterval()) ...
  • ...
  • 左右轉換需要在實現左右轉換的同時實現點擊換圖,這樣就需要(num=index;即紅色部分。),詳解見代碼。 ...
  • 以上是一個簡單地焦點圖事例,思路:圖片路徑寫在a標簽的href屬性里,點擊a得到$(this).attr("href");並把這個值給img的src。用簡單地jQuery寫一個點擊事件。 ...
  • log4js "log4js" 是一個管理,記錄日誌的工具。 其實與 "morgan" 的作用類似。 安裝 log4js的6個日誌級別 分別是:trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色) 這6個level方便我們給日誌設置不同的 ...
  • 前言 好吧,我承認我是為了搞定Sass編譯CSS文件的問題,迷一樣的著手入gulp的坑,sass和gulp的爬坑歷程大概會一起更新。然後感覺這裡windows和mac的流程差不多,不過mac的通常在指令前加sudo ,本喵是windows的本本,所以就以windows的流程為例了。 1. 安裝淘寶c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...