You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:18:03