diff --git a/src/main.js b/src/main.js index 6244c2b..4ecbaa7 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,4 @@ -import { addEvent, getMods, getKeys } from './utils'; +import { addEvent, getMods, getKeys, compareArray} from './utils'; import { _keyMap, _modifier, _downKeys, modifierMap, _mods, _handlers } from './var'; @@ -98,12 +98,13 @@ function unbind(key, scope) { // 让触发快捷键键之后没有事件执行到达解除快捷键绑定的目的 for (let r = 0; r < _handlers[key].length; r++) { obj = _handlers[key][r]; - // 判断是否在范围内并且键值相同 if ( obj.scope === scope && compareArray(obj.mods, mods) - ) _handlers[key][r] = {}; + ) { + _handlers[key][r] = {}; + } } } } @@ -166,7 +167,6 @@ function dispatch(event) { // 将modifierMap里面的修饰键绑定到event中 for (var e in _mods) _mods[e] = event[modifierMap[e]]; - console.log('_downKeys:', _mods, _downKeys); // 表单控件过滤 默认表单控件不触发快捷键 if (!hotkeys.filter.call(this, event)) return; diff --git a/src/utils.js b/src/utils.js index 663e925..a6de037 100644 --- a/src/utils.js +++ b/src/utils.js @@ -36,6 +36,19 @@ function getKeys(key) { return keys; } +//比较修饰键的数组 +function compareArray(a1, a2) { + var arr1 = a1.length >= a2.length ? a1 : a2; + var arr2 = a1.length >= a2.length ? a2 : a1; + + for (var i = 0; i < arr1.length; i++) { + if (arr2.indexOf(arr1[i]) === -1) return false; + } + + return true; +} + + export { isff,