日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keyup常用事件_keyup事件问题

發布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keyup常用事件_keyup事件问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

我自己寫了一個可以自定義監聽快捷鍵組合的模塊,

在寫按鍵彈起的函數時候,發現了一個奇怪的現象。

如果我先按下?(不松開)再按D,

此時松開D 不會觸發 keyup

如果我先按下D(不松開)再按?,

此時松開?則會觸發 keyup

代碼

const Immutable = require('immutable');

let listenList = Immutable.Map({});

let keyDownGroup = [];

const getKeyGroupString = keyGroupArray => {

let keyGroup = Array.from(keyGroupArray);

keyGroup.sort();

return keyGroup.join(',');

}

/**

* 添加快捷鍵監聽

* kg Array 快捷鍵組合

* handler Function 被監聽的事件

**/

const addListener = (kg, handler) => {

let keyGroup = getKeyGroupString(kg);

listenList = listenList.update(

keyGroup,

handlerList => handlerList ? handlerList.push(handler) : Immutable.List([handler])

);

};

/**

* 移除快捷鍵監聽

* kg Array 快捷鍵組合

* deleteHandler Function 要被移除監聽的事件(如果為空則移除該快捷鍵組合的所有事件)

**/

const removeListener = (kg, deleteHandler) => {

let keyGroup = getKeyGroupString(kg);

if (listenList.hash(keyGroup)) {

if (deleteHandler) {

listenList = listenList.update(

keyGroup,

handlerList => handlerList.filter(handler => handler !== deleteHandler)

);

} else {

listenList = listenList.delete(keyGroup);

}

}

}

window.addEventListener('keydown', event => {

keyDownGroup = Array.from(new Set([...keyDownGroup, event.keyCode]))

let keyDownGroupString = getKeyGroupString(keyDownGroup);

if (listenList.has(keyDownGroupString)) {

listenList.get(keyDownGroupString).forEach(

handler => handler()

);

}

});

window.addEventListener('keyup', event => {

// 出現奇怪問題的地方……

console.log('keyup...');

// keyDownGroup = [];

keyDownGroup.pop();

});

module.exports = {

addListener,

removeListener

}

userAgent

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.110 Electron/0.36.7 Safari/537.36"

總結

以上是生活随笔為你收集整理的keyup常用事件_keyup事件问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。