Blazor KeyDown事件在Android设备上无法触发的原因与解决办法
Blazor移动端KeyDown事件按键码不显示问题解决
可复现组件代码
<p>@Text</p> <input @onkeydown="RefreshText"/> @code { private string Text = ""; private void RefreshText(KeyboardEventArgs eventData) { Text = eventData.Code; } }
问题现象
预期每次触发KeyDown事件时,段落会显示对应按键码。PC端运行正常,但Android移动设备上段落始终为空。
问题原因
Android虚拟键盘触发keydown事件时,多数场景不会填充eventData.Code属性。Code是基于物理键盘按键位置的编码,虚拟键盘没有统一的物理位置映射标准,因此无法返回有效值;而PC端物理键盘有明确的按键位置,能正常返回Code。
解决方法
改用eventData.Key属性,或者同时兼容Code和Key(优先用Code,无值时 fallback 到Key)。Key返回的是按键对应的字符或功能键名称(如"a"、"Enter"),在虚拟键盘上能正常获取,可兼容PC和移动端。
修改后的代码示例:
<p>@Text</p> <input @onkeydown="RefreshText"/> @code { private string Text = ""; private void RefreshText(KeyboardEventArgs eventData) { Text = !string.IsNullOrEmpty(eventData.Code) ? eventData.Code : eventData.Key; } }
内容的提问来源于stack exchange,提问作者Bartosz Pawluk
相关产品推荐
相关产品推荐

