我在使用 .NET8 的 Blazor(Web 应用程序,交互式渲染模式 = 服务器)中出现了这种奇怪的新滚动行为。
点击链接时,滚动位置不会改变。如果单击页面上最下方的链接,则会在同一滚动位置打开新页面,然后用户必须自己向上滚动才能看到页面顶部。 .NET 的情况并非如此 <= 7 / Blazor Server Side.
到目前为止,我发现的一个解决方法是使用锚链接(例如,在每个页面的顶部插入
<span id ="top"></span>
,然后向所有链接添加“#top”)。但我想避免这种情况,这是可以理解的。
这是一个小仓库:https://github.com/Sabbi/BlazorScroll
只需点击页面底部的链接(您需要向下滚动才能看到它),然后新页面就会显示,而不是从顶部显示。
知道如何解决这个问题吗?
[更新]:
在 App.razor 中,我已将
<Routes />
更改为 <Routes @rendermode="@RenderMode.InteractiveServer" />
。
现在滚动已按预期进行,但代价是 Blazor 现在打开 Websocket 连接(我想避免这种情况,因为页面上没有交互式组件)。
由于它在不同的渲染模式下表现不同,我认为它更像是一个错误而不是一个功能。
我认为您可以通过在链接上添加此数据属性来获得所需的行为: 数据增强导航=“假” 这告诉 Blazor 不要在这些链接上使用增强导航。