我使用的是M1釋放,寫了一個關鍵的處理程序是這樣的:在FF或IE跨瀏覽器的關鍵事件處理程序飛鏢
void _onKeyPress(KeyboardEvent e) {
switch (e.keyIdentifier) {
case KeyName.UP:
case KeyName.LEFT:
e.preventDefault();
prev();
break;
case "U+0020": // FIXME Must be a better way, or?
case KeyName.DOWN:
case KeyName.RIGHT:
e.preventDefault();
next();
break;
}
}
它工作正常,在Chrome,但不是。必須有更好的方法來處理空格鍵,並將其保存在一個開關中,對嗎?我知道我可以查看其他字段來獲得空間,但這不是一個好的選擇(因爲那時我會將代碼分成兩個switch語句)。無論如何,它在FF和IE中不起作用的問題更糟糕。如果我改寫爲使用keyCode
,它可以在所有瀏覽器上正常工作。
void _onKeyPress(KeyboardEvent e) {
switch (e.keyCode) {
case 38:
case 37:
e.preventDefault();
prev();
break;
case 32:
case 40:
case 39:
e.preventDefault();
next();
break;
}
}
我的問題是,我找不到虛擬鍵碼的常量。難道我做錯了什麼?處理Dart中跨瀏覽器兼容的關鍵事件的最佳方式是什麼?
感謝jj,我不害怕if/else,但是你必須同意,與開關相比,你會失去清晰度,我會問問題: - ) –
謝謝你主演,托比亞斯:)是的,我同意你失去了清晰度與開關相比。 –
這已修復!更新了我的答案。 –