最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)自動鎖屏功能

 更新時間:2021年06月02日 10:02:14   作者:小蟬兒  
有這么一個需求,開發(fā)了一套系統(tǒng),當用戶離開桌面或者一段時間不操作的話,需要把該系統(tǒng)所有打開頁面鎖定起來,本文就詳細的介紹一下,感興趣的可以了解一下

1.使用場景

有這么一個需求,開發(fā)了一套系統(tǒng),當用戶離開桌面或者一段時間不操作的話,需要把該系統(tǒng)所有打開頁面鎖定起來,就跟桌面鎖屏一樣,只能輸入密碼驗證成功后,或者重新登錄,才可以繼續(xù)操作頁面,如果刷新頁面,也要保持鎖定。就像下圖一樣。當然用戶也可以手動觸發(fā)鎖屏。目的是防止他人隨意操作系統(tǒng)的重要內(nèi)容。那么該如何去實現(xiàn)呢?

5s鎖屏效果如下:

2.思路

  1. 首先需要一個變量isLock表示頁面是否鎖定。由于多個頁面需要共享這個數(shù)據(jù),且刷新后依然能夠獲取到,所以我使用了localStorage儲存在本地。isLock為true的時候就展示鎖屏樣式。
  2. 設置一個定時器 setTimeout,比如代碼中設置頁面無操作n秒后鎖屏,那么n秒后執(zhí)行鎖屏操作lockPro(),即var timer = setTimeout(lockPro, n)
  3. 需要監(jiān)測window的mousemove事件,監(jiān)測用戶鼠標移動動作,判斷屏幕有沒有被鎖定,如果已經(jīng)鎖定,則不做任何操作,如果屏幕還沒有鎖定,需要設置一個變量moveTime記錄每次鼠標移動時的時間,并保存到localStorage中,并且清除定時器timer,重新計時。
  4. setInterval輪詢監(jiān)聽isLock,每1s獲取一次,以便及時拿到鎖屏狀態(tài)。
  5. 鎖屏操作lockPro,判斷當前時間與上次鼠標操作的時間即moveTime的差值,如果小于n秒,則認為不需要鎖屏,如果大于等于n秒,則需要鎖屏,并更新鎖屏狀態(tài)isLock
  6. 判斷狀態(tài)為鎖定后,清除定時器timer,結束定時任務。
  7. 判斷狀態(tài)為未鎖定后,重置定時器,即先清除timer,再設置一個timer
  8. 退出登錄時,清除本地緩存isLock。
  9. 密碼解鎖時,清除本地緩存isLock,重新設置moveTime,重置定時器。

有點繞,需要好好捋一捋。

3.代碼實現(xiàn)

以下代碼是不完全代碼,html結構省略了,大家自由發(fā)揮。

// app.vue

data () {
  return {
    timeOut: 5000,
    timer: null,
    isLock: 'false'
  }
},
mounted () {
  this.timer = setTimeout(this.lockPro, this.timeOut)
  // 首次設置操作時間
  localStorage.setItem('moveTime', Date.now())
  // 首次判斷狀態(tài)
  this.modalStatus()
  // 輪詢監(jiān)聽狀態(tài)
  setInterval(this.modalStatus, 1000)
  // 監(jiān)聽鼠標事件
  this.events()
},
methods:{
   events() {
      window.onmousemove = () => {
        // console.log('鼠標移動了')
        if (!this.isLock) {
          localStorage.setItem('moveTime', Date.now())
          this.clearLocaPro('continue')
        }
      }
    },
    modalStatus() {
      if (localStorage.getItem('isLock') === 'true') {
        // console.log('鎖屏了')
        this.isLock = true
        this.clearLocaPro()
      } else {
        // console.log('當前沒鎖屏')
        this.isLock = false
        this.clearLocaPro('continue')
      }
    },
    lockPro() {
      if (!this.timeOut) {
        localStorage.setItem('isLock', 'false')
        this.clearLocaPro('continue')
        return
      }
      if (Date.now() - localStorage.getItem('moveTime') < this.timeOut) {
        localStorage.setItem('isLock', 'false')
        this.clearLocaPro('continue')
      } else {
        localStorage.setItem('isLock', 'true')
        this.clearLocaPro()
      }
    },
    clearLocaPro(status) {
      if(this.timer){
         clearTimeout(this.timer)
      }
      if (status === 'continue') {
        this.timer = setTimeout(this.lockPro, this.timeOut)
      }
    },
    // 手動鎖定
    handleLock(){
      this.clearLocaPro()
      localStorage.setItem('isLock', 'true')
    },
    // 密碼解鎖
    unlock(){
      localStorage.removeItem('isLock')
      localStorage.setItem('moveTime', Date.now())
      this.clearLocaPro('continue')
    },
    ...
    // 別忘了退出登錄也要清除isLock
}

到此這篇關于js實現(xiàn)自動鎖屏功能的文章就介紹到這了,更多相關js 自動鎖屏 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JS合并兩個數(shù)組的方法詳解

    JS合并兩個數(shù)組的方法詳解

    這篇文章主要詳細介紹了JS合并兩個數(shù)組的方法,文中有詳細的代碼示例,對我們學習JS有一定的幫助,感興趣的同學可以參考一下
    2023-06-06
  • JavaScript獲取指定元素位置的方法

    JavaScript獲取指定元素位置的方法

    這篇文章主要介紹了JavaScript獲取指定元素位置的方法,實例分析了javascript中l(wèi)eft、scrollLeft、top、scrollTop、offsetHeight等屬性的使用技巧,需要的朋友可以參考下
    2015-04-04
  • JavaScript中offsetWidth的bug及解決方法

    JavaScript中offsetWidth的bug及解決方法

    這篇文章主要為大家詳細介紹了JavaScript中offsetWidth的bug及解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • javascript實時顯示北京時間的方法

    javascript實時顯示北京時間的方法

    這篇文章主要介紹了javascript實時顯示北京時間的方法,涉及javascript操作時間顯示的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 微信小程序按鈕巧妙用法

    微信小程序按鈕巧妙用法

    這篇文章主要介紹了微信小程序按鈕巧妙用法,按鈕組件功能比?HTML?中的?button?按鈕豐富,通過?open-type?屬性可以調(diào)用微信提供的各種功能(客服、轉發(fā)、獲取用戶授權、獲取用戶信息等),需要的朋友可以參考下
    2022-12-12
  • 有趣的bootstrap走動進度條

    有趣的bootstrap走動進度條

    這篇文章主要為大家詳細介紹了如何實現(xiàn)有趣的bootstrap走動進度條,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • javascript中parseInt()函數(shù)的定義和用法分析

    javascript中parseInt()函數(shù)的定義和用法分析

    這篇文章主要介紹了javascript中parseInt()函數(shù)的定義和用法,較為詳細的分析了parseInt()函數(shù)的定義及具體用法,以及參數(shù)使用時的注意事項,需要的朋友可以參考下
    2014-12-12
  • webpack4升級到webpack5的實戰(zhàn)經(jīng)驗總結

    webpack4升級到webpack5的實戰(zhàn)經(jīng)驗總結

    有些老項目的包長時間沒有更新,導致項目中有些性能問題,在項目迭代中考慮升級包,下面這篇文章主要給大家介紹了關于webpack4升級到webpack5的實戰(zhàn)經(jīng)驗,需要的朋友可以參考下
    2022-08-08
  • JavaScript操作XLSX文件的示例詳解

    JavaScript操作XLSX文件的示例詳解

    本文將深入探討如何使用強大的xlsx庫來操作Excel文件,本文將涵蓋如何在Node.js和瀏覽器環(huán)境中讀取Excel文件,創(chuàng)建新的Excel文件等內(nèi)容,感興趣的小伙伴可以了解下
    2024-11-11
  • JavaScript時間操作之年月日星期級聯(lián)操作

    JavaScript時間操作之年月日星期級聯(lián)操作

    這篇文章主要介紹了JavaScript時間操作之級聯(lián)日期選擇操作,涉及到年、月、日、星期,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評論

武定县| 绥滨县| 光山县| 丰台区| 拉萨市| 姜堰市| 静安区| 集贤县| 乌拉特中旗| 弋阳县| 鸡东县| 土默特左旗| 台前县| 贵阳市| 英德市| 东海县| 海兴县| 旅游| 洪泽县| 四子王旗| 时尚| 容城县| 攀枝花市| 岚皋县| 正宁县| 丁青县| 大方县| 奉贤区| 西昌市| 襄汾县| 兴义市| 香河县| 湘乡市| 峨山| 宾阳县| 兴城市| 开平市| 泗洪县| 大渡口区| 濉溪县| 大埔县|