如何在没有 Javascript 的情况下将焦点设置到页面顶部?

Posted

技术标签:

【中文标题】如何在没有 Javascript 的情况下将焦点设置到页面顶部?【英文标题】:How do I set focus to the top of a page without Javascript? 【发布时间】:2021-06-09 01:26:33 【问题描述】:

有没有办法在 Blazor 中不使用 javascript 转到页面顶部?我有一个项目列表,用户可以单击其中一个进行编辑并在页面顶部查看更多详细信息。我正在为我的组件使用 MudBlazor。

【问题讨论】:

看来您根本无法在没有 JavaScript 的情况下使用 Blazor,您为什么要问这个?此外,您不能“聚焦”页面的一部分,您只能滚动到页面上的一个点 - 只有<form> 控件(例如<input> 等)和带有@987654323 的元素@ 可以聚焦。 【参考方案1】:

使用 .NET 5.0,您现在拥有 FocusAsync()

<input @ref="exampleInput" />
<button @onclick="ChangeFocus">Focus the Input Element</button>
@code 
    private ElementReference exampleInput;
    private async Task ChangeFocus()
    
        await exampleInput.FocusAsync();
    

https://docs.microsoft.com/en-us/aspnet/core/blazor/components/event-handling?view=aspnetcore-5.0#focus-an-element

【讨论】:

焦点会移到页面顶部吗? 它将焦点设置在您输入的任何位置。不幸的是,这不适用于 MudBlazor MudText 字段。我已向 MudBlazor 团队提出添加此功能的请求。 实际上,这确实适用于 MudBlazor!查看此页面上的焦点部分 - mudblazor.com/components/textfield 我的错误是我尝试了 MudText,而我应该尝试使用 MudTextField。【参考方案2】:

为了到达页面顶部,我使用 NavigationManager 导航到同一页面,并将 forceLoad 设置为 false(默认值)

    @inject NavigationManager NavigationManager

    NavigationManager.NavigateTo($"/currentpage");

这有点麻烦,但它可以工作并且不会重新加载页面。

【讨论】:

以上是关于如何在没有 Javascript 的情况下将焦点设置到页面顶部?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不从当前活动选项卡中获取焦点的情况下将子窗口添加到 QMdiArea(设置为 TAB 模式)?

Django:如何在没有''的情况下将数组传输到javascript?

如何在没有javascript的情况下将PDF嵌入网页[重复]

如何在没有 JavaScript 的情况下将 cookie 注入 WKWebView 或 WKWebSiteDataStore?

如何在不将您的应用设为默认消息应用的情况下将短信发送到 android 中的特定应用?

如何在没有任何错误的情况下将其他 JavaScript 文件连接到 Vue 文件?