您可以尝试一下。添加了一个有效的示例。当焦点位于输入上时,打开大写锁定会使LED变为红色,否则变为绿色。(尚未在Mac / Linux上进行过测试)
另外,这是修改后的版本(有人可以在Mac上测试并确认)
function isCapslock(e){
const IS_MAC = /Mac/.test(navigator.platform);
const charCode = e.charCode;
const shiftKey = e.shiftKey;
if (charCode >= 97 && charCode <= 122){
capsLock = shiftKey;
} else if (charCode >= 65 && charCode <= 90
&& !(shiftKey && IS_MAC)){
capsLock = !shiftKey;
}
return capsLock;
}
函数isCapslock(e){
e = (e) ? e : window.event;
var charCode = false;
if (e.which) {
charCode = e.which;
} else if (e.keyCode) {
charCode = e.keyCode;
}
var shifton = false;
if (e.shiftKey) {
shifton = e.shiftKey;
} else if (e.modifiers) {
shifton = !!(e.modifiers & 4);
}
if (charCode >= 97 && charCode <= 122 && shifton) {
return true;
}
if (charCode >= 65 && charCode <= 90 && !shifton) {
return true;
}
return false;
}
对于国际字符,可以根据需要为以下键添加附加检查。您必须获取感兴趣字符的键码范围,可能是通过使用一个键映射数组,该数组将保存您要寻址的所有有效用例键。
大写AZ或’Ä’,’Ö’,’Ü’,小写aZ或0-9或’ä’,’ö’,’ü’
上面的键只是示例表示。