From b1b60bee678ad090362b693a6f5d004fb016d12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E5=A4=A9?= Date: Wed, 4 Nov 2020 19:51:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=9A=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 20 +++++++++++--------- package.json | 2 +- src/index.es7 | 16 +++++++++------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Readme.md b/Readme.md index b395f98..222e52c 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ ## JS键盘热键 > 支持各种按钮组合。原生js开发, 无任何依赖(不到`2KB`)。使用也非常简单。 ->> 1.0版 功能键(Shift, Ctrl, Alt/Option, Win/Cmd)不区分左右。 +>> 1.x版 功能键(Shift, Ctrl, Alt/Option, Win/Cmd)不区分左右。 ![keyboard](./keyboard.jpg) @@ -13,6 +13,8 @@ import Keyboard from 'http://unpkg.bytedo.org/@bytedo/keyboard/dist/index.js' var kb = new Keyboard() +// 默认整个document监听, 也可以单独对局部起效 +// var kb = new Keyboard(document.querySelector('.foo')) // 同时按Ctrl键和C键, 触发回调 kb.on(['ctrl + c'], ev => { @@ -101,18 +103,18 @@ kb.on(['ctrl + c', 'ctrl + v'], ev => { | Numlock | numlock | 数字键锁定键(87键以下的键盘没有) | | Backspace | backspace | 回退键(=号键右边那个) | | Tab | tab | 制表符键 | -| Cmd/Win | meta | Command/Win键(1.0版不区别左右) | +| Cmd/Win | meta | Command/Win键(1.x版不区别左右) | | Space | space | 空格键 | -| Ctrl | ctrl | Ctrl键(1.0版不区分左右) | -| Shift | shift | Shift键(1.0版不区分左右) | -| Alt/Option| alt | Alt/Option键(1.0版不区分左右) | -| Enter | enter | 回车键(1.0版不区分小数字键盘的回车) | +| Ctrl | ctrl | Ctrl键(1.x版不区分左右) | +| Shift | shift | Shift键(1.x版不区分左右) | +| Alt/Option| alt | Alt/Option键(1.x版不区分左右) | +| Enter | enter | 回车键(1.x版不区分小数字键盘的回车) | | ' | ' | 单引号键 | | * | * | 小数字键盘中的乘号 | | + | + | 小数字键盘中的加号 | -| - | - | 小数字键盘中的减号;及主键盘中的减号 (1.0版不区分) | -| / | / | 小数字键盘中的除号;及主键盘中的斜杠 (1.0版不区分) | -| 。 | . | 小数字键盘中的小数点;及主键盘中的句号 (1.0版不区分) | +| - | - | 小数字键盘中的减号;及主键盘中的减号 (1.x版不区分) | +| / | / | 小数字键盘中的除号;及主键盘中的斜杠 (1.x版不区分) | +| 。 | . | 小数字键盘中的小数点;及主键盘中的句号 (1.x版不区分) | | , | , | 逗号 | | ; | ; | 分号 | | = | = | 等号 | diff --git a/package.json b/package.json index cfeb38a..402d19c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bytedo/keyboard", - "version": "1.0.0", + "version": "1.1.0", "description": "支持各种按钮组合。原生js开发, 无任何依赖(不到2KB)。使用也非常简单。", "main": "dist/index.js", "repository": { diff --git a/src/index.es7 b/src/index.es7 index 2ef8629..47acd66 100644 --- a/src/index.es7 +++ b/src/index.es7 @@ -6,13 +6,13 @@ import { KEY_DICT, MULTI_KEYS, MULTI_KEY_CODES } from './key.dict.js' -function bind(fn) { - document.addEventListener('keydown', fn, false) +function bind(el, fn) { + ;(el || document).addEventListener('keydown', fn, false) return fn } -function unbind(fn) { - document.removeEventListener('keydown', fn, false) +function unbind(el, fn) { + ;(el || document).removeEventListener('keydown', fn, false) } function hide(target, name, value) { @@ -44,13 +44,15 @@ function check(ev) { } export default class Keyboard { - constructor() { + constructor(elem) { + console.log(elem) + this.$elem = elem hide(this, '__EVENTS__', {}) hide( this, '_keydown', - bind(ev => { + bind(elem, ev => { if (MULTI_KEY_CODES.includes(ev.keyCode)) { return } @@ -106,7 +108,7 @@ export default class Keyboard { } destroy() { - unbind(this._keydown) + unbind(this.$elem, this._keydown) delete this.__EVENTS__ delete this._keydown }