我正在制作一个虚拟键盘,通过按一个物理键,它的副本必须在屏幕上突出显示.问题是,当我按下按钮时,什么都没有发生.程序侦听鼠标事件,这部分很好.代码提取:
_createKeys() {
const fragment = document.createDocumentFragment();
const layout = [
'`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 'backspace',
'tab', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']',
'caps lock', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', '\'', '\\', 'enter',
'shiftLeft', '\\', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'shiftRight', 'arrowUp',
'Ctrl', 'Win', 'Alt', 'space', 'Alt', 'Ctrl', 'arrowLeft', 'arrowDown', 'arrowRight'
];
const createIconHTML = (icon_name) => {
return `<i class="material-icons">${icon_name}</i>`;
};
layout.forEach(key => {
const keyElement = document.createElement('button');
const lineBreak = ['backspace', ']', 'enter', 'arrowUp'].indexOf(key) !== -1;
keyElement.setAttribute('type', 'button');
keyElement.classList.add('key');
switch(key) {
case 'caps lock':
keyElement.classList.add('key-wide');
keyElement.textContent = 'CapsLock';
keyElement.addEventListener("click", () => {
this._toggleCapsLock();
keyElement.classList.toggle('key-caps', this.properties.capsLock);
});
keyElement.addEventListener('keydown', (e) => {
if(e.key === 'CapsLock') console.log('pressed');
});
}
fragment.appendChild(keyElement);
if (lineBreak) {
fragment.appendChild(document.createElement('br'));
}
});
return fragment;
},