Merge pull request #1638 from spicyj/getmodifierstate-2

Fix getEventModifierState, no allocations
This commit is contained in:
Christoph Pojer
2014-06-03 14:36:16 -07:00
+15 -7
View File
@@ -31,14 +31,22 @@ var modifierKeyToProp = {
'shift': 'shiftKey'
};
// IE8 does not implement getModifierState so we simply map it to the only
// modifier keys exposed by the event itself, does not support Lock-keys.
// Currently, all major browsers except Chrome seems to support Lock-keys.
function modifierStateGetter(keyArg) {
/*jshint validthis:true */
var syntheticEvent = this;
var nativeEvent = syntheticEvent.nativeEvent;
if (nativeEvent.getModifierState) {
return nativeEvent.getModifierState(keyArg);
}
var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
return keyProp && nativeEvent[keyProp];
}
function getEventModifierState(nativeEvent) {
// IE8 does not implement getModifierState so we simply map it to the only
// modifier keys exposed by the event itself, does not support Lock-keys.
// Currently, all major browsers except Chrome seems to support Lock-keys.
return nativeEvent.getModifierState || function(keyArg) {
var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
return keyProp && nativeEvent[keyProp];
};
return modifierStateGetter;
}
module.exports = getEventModifierState;