Add unbind method .

pull/11/head
jaywcjlove 10 years ago
parent df91cd6276
commit a6d86bc43c

@ -121,6 +121,47 @@
}
}
}
//解除绑定某个范围的快捷键
function unbind (key,scope) {
var multipleKeys = getKeys(key),keys,mods = [],obj;
console.log( multipleKeys.length);
for (var i = 0; i < multipleKeys.length; i++) {
//将组合快捷键拆分为数组
keys =multipleKeys[i].split('+');
//记录每个组合键中的修饰键的键码 返回数组
if(keys.length > 1) mods=getMods(keys);
//获取除修饰键外的键值key
key = keys[keys.length - 1];
key = code(key);
//判断是否传入范围,没有就获取范围
if(scope === undefined) scope = getScope();
//如何key不在 _handlers 中返回不做处理
if (!_handlers[key]) return;
//清空 handlers 中数据,
//让触发快捷键键之后没有事件执行到达解除快捷键绑定的目的
for (var r = 0; r < _handlers[key].length; r++) {
obj = _handlers[key][r];
//判断是否在范围内并且键值相同
if (obj.scope === scope && compareArray(obj.mods, mods)) {
_handlers[key][r] = {};
}
}
}
}
//比较修饰键的数组
function compareArray(a1, a2) {
if (a1.length !== a2.length) return false;
for (var i = 0; i < a1.length; i++) {
if (a1[i] !== a2[i]) return false;
}
return true;
}
//修饰键转换成对应的键码
function getMods (key) {
var mods = key.slice(0, key.length - 1);
@ -174,7 +215,8 @@
setScope:setScope,
getScope:getScope,
getPressedKeyCodes:getPressedKeyCodes,
isPressed:isPressed
isPressed:isPressed,
unbind:unbind
};
for (var a in _api) hotkeys[a] = _api[a];
return hotkeys;

Loading…
Cancel
Save