亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js簡(jiǎn)單封裝監(jiān)聽(tīng)快捷鍵對(duì)象示例及使用

 更新時(shí)間:2023年08月08日 14:43:06   作者:littlesunn  
這篇文章主要為大家介紹了js簡(jiǎn)單封裝監(jiān)聽(tīng)快捷鍵對(duì)象及使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

js簡(jiǎn)單封裝一個(gè)監(jiān)聽(tīng)快捷鍵的對(duì)象

export default class Shortcuts {
    keyCodeMap = new Map([
        ["0", 48],
        ["1", 49],
        ["2", 50],
        ["3", 51],
        ["4", 52],
        ["5", 53],
        ["6", 54],
        ["7", 55],
        ["8", 56],
        ["9", 57],
        ["A", 65],
        ["B", 66],
        ["C", 67],
        ["D", 68],
        ["E", 69],
        ["F", 70],
        ["G", 71],
        ["H", 72],
        ["I", 73],
        ["J", 74],
        ["K", 75],
        ["L", 76],
        ["M", 77],
        ["N", 78],
        ["O", 79],
        ["P", 80],
        ["Q", 81],
        ["R", 82],
        ["S", 83],
        ["T", 84],
        ["U", 85],
        ["V", 86],
        ["W", 87],
        ["X", 88],
        ["Y", 89],
        ["UP", 38],
        ["RIGHT", 39],
        ["DOWN", 40],
        ["LEFT", 37],
        ["CTRL", 17],
        ["SHIFT", 16],
        ["ALT", 18],
        ["SPACE", 32],  // 空格鍵
    ]);
    constructor(keyNames = [], callback, isPreventDefault = false) {
        this.destroy();
        this.isPreventDefault = isPreventDefault;
        this.keyNames = keyNames;
        this.callback = callback;
        this.initEventListener()
    }
    initEventListener() {
        document.addEventListener("keyup", this.handleKeyup.bind(this))
    }
    destroy() {
        document.removeEventListener("keyup", this.handleKeyup.bind(this))
    }
    handleKeyup(e) {
        this.isPreventDefault && e.preventDefault();  // 是否阻止默認(rèn)行為
        let conditions = []
        if (Array.isArray(this.keyNames)) {  // 數(shù)組是組合鍵
            this.keyNames.forEach(code => {
                let strCode = code.toString().toUpperCase();
                switch (strCode) {
                    case "CTRL":
                        conditions.push(e.ctrlKey)
                        break;
                    case "SHIFT":
                        conditions.push(e.shiftKey)
                        break;
                    case "ALT":
                        conditions.push(e.altKey)
                        break;
                    default:
                        conditions.push(this.keyCodeMap.get(strCode) == e.keyCode)
                        break;
                }
            })
        }else {
            let strCode = this.keyNames.toString().toUpperCase();
            if(strCode == e.keyCode){
                conditions.push(true); 
            }
        }
        if (conditions.every(item => item)) {
            this.callback && this.callback()
        }
    }
}

使用

    new Shortcuts(["ctrl", "q"], ()=>{  //組合鍵
      console.log(111);
    });
    new Shortcuts("q", ()=>{  // 單鍵
      console.log(111);
    });

以上就是js簡(jiǎn)單封裝監(jiān)聽(tīng)快捷鍵對(duì)象示例及使用的詳細(xì)內(nèi)容,更多關(guān)于js封裝監(jiān)聽(tīng)快捷鍵對(duì)象的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序 富文本轉(zhuǎn)文本實(shí)例詳解

    微信小程序 富文本轉(zhuǎn)文本實(shí)例詳解

    這篇文章主要介紹了微信小程序 富文本轉(zhuǎn)文本實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 使用javascript解析二維碼的三種方式

    使用javascript解析二維碼的三種方式

    這篇文章主要給大家分享使用javascript解析二維碼的三種方式,二維碼就是將我們能看懂的文字語(yǔ)言,以機(jī)器語(yǔ)言的形式存儲(chǔ)了起來(lái)。其中黑色小方塊代表的是1,白色小方塊代表的是0,黑白相間的圖案其實(shí)就是一串編碼,掃碼的過(guò)程就是翻譯這些編碼的過(guò)程,需要的朋友可以參考一下
    2021-11-11
  • 微信小程序 input輸入及動(dòng)態(tài)設(shè)置按鈕的實(shí)現(xiàn)

    微信小程序 input輸入及動(dòng)態(tài)設(shè)置按鈕的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序 input輸入及動(dòng)態(tài)設(shè)置按鈕的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • Google 地圖疊加層實(shí)例講解

    Google 地圖疊加層實(shí)例講解

    本文主要介紹Google 地圖疊加層,這里幫大家整理了Google地圖疊加層一些實(shí)用代碼并詳細(xì)介紹了相關(guān)知識(shí),有需要的小伙伴可以參考下
    2016-08-08
  • 微信小程序 wxapp視圖容器 view詳解

    微信小程序 wxapp視圖容器 view詳解

    這篇文章主要介紹了微信小程序 wxapp視圖容器 view詳解的相關(guān)資料,附簡(jiǎn)單實(shí)例和實(shí)現(xiàn)效果圖,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下
    2016-10-10
  • 微信小程序下拉刷新界面的實(shí)現(xiàn)

    微信小程序下拉刷新界面的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序下拉刷新界面的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • 為什么我們要做三份 Webpack 配置文件

    為什么我們要做三份 Webpack 配置文件

    前端從開(kāi)發(fā)到部署前都離不開(kāi) Webpack 的參與,本文結(jié)合了我們自己在開(kāi)發(fā)中碰到的種種問(wèn)題解決方案,同時(shí)借鑒了很多開(kāi)源項(xiàng)目的配置來(lái)介紹一種用 3 個(gè) JS 文件來(lái)配置 Webpack 的方法。
    2017-09-09
  • 解密效果

    解密效果

    解密效果...
    2006-06-06
  • 直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解

    直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解

    這篇文章主要為大家介紹了直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • CryptoJs常規(guī)密碼加密demo

    CryptoJs常規(guī)密碼加密demo

    這篇文章主要為大家介紹了CryptoJs常規(guī)密碼加密的實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論