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

macOS上MAUI Blazor应用的Input元素与InputText组件键盘事件未触发

MAUI Blazor在macOS上input/InputText键盘事件无法触发(Windows正常)

在运行于macOS系统的MAUI Blazor应用中,input元素或InputText组件的@onkeydown、@onkeyup、@onkeypress等键盘事件无法触发,但Windows系统上可正常工作。

测试代码如下:

<input @onkeydown="KeydownHandler" @onkeypress="KeyPressHandler" @onkeyup="KeyUpHandler" @onfocus="FocusHandler"/>

@code {
    public string ComboFieldsDimensionsAll_SelectedItem;

    public void KeydownHandler()
    {
    }

    public void KeyPressHandler()
    {
    }

    public void KeyUpHandler()
    {
    }

    public void FocusHandler()
    {
    }
}

重现步骤

  • 运行MAUI应用
  • 聚焦input元素
  • 输入任意字母数字键

预期结果

每次有效按键时均触发对应键盘事件

实际结果

按键输入时无任何键盘事件触发


解决方案1:更新.NET MAUI到最新稳定版本

该问题在早期.NET MAUI版本中存在已知兼容性bug,已在后续版本中修复。通过NuGet将项目中的Microsoft.Maui.Controls、Microsoft.Maui.Controls.Compatibility等核心包更新至最新稳定版,可解决大部分此类跨平台事件问题。

解决方案2:调整事件绑定参数与行为

macOS上的WebKit WebView对无参数的事件处理函数支持存在差异,同时可显式关闭preventDefault避免事件被系统拦截:

<input @onkeydown="KeydownHandler" @onkeydown:preventDefault="false"
       @onkeyup="KeyUpHandler" @onkeyup:preventDefault="false"
       @onfocus="FocusHandler"/>

@code {
    // 使用带参数的事件处理函数,兼容macOS WebView行为
    public void KeydownHandler(KeyboardEventArgs e)
    {
        // 可通过e.Key获取具体按键信息,编写业务逻辑
    }

    public void KeyUpHandler(KeyboardEventArgs e)
    {
        // 处理逻辑
    }

    public void FocusHandler()
    {
    }
}

注意:@onkeypress已被现代浏览器标准弃用,建议使用@onkeydown或@onkeyup替代。

解决方案3:配置WebView初始化脚本

若上述方法无效,可通过自定义WebView初始化脚本强制传递键盘事件:
在项目的Platforms/MacOS/Program.cs中添加以下配置:

builder.Services.Configure<MauiBlazorWebViewOptions>(options =>
{
    options.BlazorWebViewInitializationScript = @"
        // 捕获键盘事件并阻止向上冒泡,确保Blazor能正常接收
        window.addEventListener('keydown', (e) => {
            e.stopPropagation();
        }, true);
        window.addEventListener('keyup', (e) => {
            e.stopPropagation();
        }, true);
    ";
});

内容的提问来源于stack exchange,提问作者Deepak_Ramakrishnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:57:04