Blazor @onmousedown无法识别长按及.NET MAUI Blazor事件失效问题
问题现象
需要实现区分鼠标短按、长按的交互逻辑,短按触发正常,但长按操作时@onmousedown事件始终未被触发。
现有实现代码
<li @onmousedown="MouseDown" @onmouseup="MouseUp"> ... </li>
DateTime mouseDownTme; void MouseDown() { mouseDownTme = DateTime.UtcNow; } void MouseUp() { long milliseconds = (DateTime.UtcNow.Ticks - mouseDownTme.Ticks) / TimeSpan.TicksPerMillisecond; if (milliseconds > 400) { // 长按逻辑 Console.WriteLine("long press"); } else { // 短按逻辑 Console.WriteLine("short press"); } }
补充说明
以上代码在普通Blazor环境下运行正常,仅在.NET MAUI Blazor场景中出现事件不触发的问题。
原因说明
该问题是.NET MAUI Blazor封装的原生WebView的事件拦截逻辑异常导致的:长按操作会被WebView原生的上下文菜单、长按手势识别逻辑优先捕获,不会透传给Blazor绑定的前端DOM事件,因此@onmousedown不会触发。
临时规避方案
- 给对应DOM元素添加禁用默认上下文菜单的属性,阻止原生长按菜单触发,避免事件被原生逻辑拦截
- 同时绑定触摸事件
@ontouchstart/@ontouchend和鼠标事件,覆盖触摸、鼠标两种输入场景,提升兼容性
问题反馈渠道
你可以到微软官方的dotnet/maui代码仓库提交Issue反馈该问题,提交前建议先搜索现有Issue,避免重复提交。提交时需附带完整的复现步骤、运行环境版本信息、最小可复现的代码示例,方便维护者快速定位问题。
内容的提问来源于stack exchange,提问作者Fabian Kracher
相关产品推荐
相关产品推荐

