ElementReference.FocusAsync() 用于让 HTML 元素获得焦点,需 await 调用且仅在组件已渲染、元素存在于 DOM 时有效;应通过 @ref 绑定 ElementReference,避免在 OnInitialized 中调用,推荐在 OnAfterRender(配合标志位)或用户事件中使用,并注意元素状态与兼容性。

在 Blazor 中,ElementReference.FocusAsync() 用于让某个 HTML 元素获得焦点,常用于表单自动聚焦、键盘导航或用户交互触发后快速定位输入框。它返回一个 ValueTask,需用 await 调用,且只在组件已渲染、元素真实存在于 DOM 中时才有效。
必须先通过 @ref 将元素引用到 ElementReference 类型的字段或属性上,不能直接对字符串或未初始化的变量调用:
<input type="text">
private ElementReference myInput;
OnInitialized 中立即调用 FocusAsync —— 此时 DOM 尚未生成,会静默失败最稳妥的时机是 OnAfterRender(配合标志位)或用户触发的事件(如按钮点击、输入完成):
Zoomify 是一款基于的简单带缩放效果的 jQuery lightbox 插件,它使用简单,出来提供基本的属性外,还提供了自动事件和自定义方法,能够满足大多数需求。
43
await myInput.FocusAsync(); 放在 async Task HandleClick() { ... } 内OnAfterRender 中检查并调用,之后设为 true 防止重复OnInitializedAsync 中 await FocusAsync,它不保证 DOM 可用FocusAsync 在元素被移除、禁用(disabled)、隐藏(display: none 或 visibility: hidden)时可能无效,但通常不会抛异常。可做基础防护:
disabled 状态,且 tabindex 未设为 -1(除非你主动控制)try/catch 或判断 JSRuntime 是否可用(服务端渲染时 JS 不可用)基本上就这些。只要引用存在、时机得当、元素可交互,FocusAsync 就能可靠工作。
以上就是Blazor ElementReference.FocusAsync() 使用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号