滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能
Posted
技术标签:
【中文标题】滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能【英文标题】:Scroll click not working with NavigationManager.NavigateTo, and I can't use href because I need forceLoad functionality 【发布时间】:2021-09-12 14:45:59 【问题描述】:我有一个 Blazor Server Web 应用程序; .NET 5。
我在我的网络应用程序的页面之间导航时遇到了挫折:
当我使用NavigationManager.NavigateTo(uri, true)
时,我无法使用滚动单击打开链接(如果我改用href="uri"
,它将在新的浏览器选项卡中打开链接)。它会打开一个新标签页,但会加载我之前所在的页面。
当我改用href="uri"
时,滚动单击有效。但是,它引入了一个新问题:使用“普通”左键单击,新页面会加载但在移动浏览器中保留上一页的滚动位置(我已经使用移动 Safari 以及 Chrome 中的移动模拟器进行了测试) )。
我需要能够滚动单击进入新选项卡,以及在不保留前一页滚动位置的情况下加载新页面。有什么建议吗?
【问题讨论】:
Blazor 中没有允许我们滚动到页面上某个点的功能。目前只能通过 javascript 滚动到网页上的特定位置。你可以参考这个帖子:***.com/questions/55186784/… @NMSL 你误解了这个问题。我不是在寻找滚动到页面上某个点的能力。我将在此评论中解释我要做什么,但我只是重复我在 OP 中写的内容。 您所描述的左键单击和滚动位置不会发生在开箱即用的新项目中。也许您在添加到项目中的内容时引入了滚动位置问题。你可以为这个问题创建一个小型的公开重现吗? @MisterMagoo 只是为了明确一点-您是否正在使用 Desktop Chrome 的 iPhone 模拟器进行测试?那(以及在 iPhone 设备上)是我看到滚动位置行为的地方。 是的,我尝试过使用桌面 Chrome iphone 模式 - 你有自定义导航菜单吗?你在使用任何JS吗?您是否尝试过用一个全新的项目进行测试? 【参考方案1】:假设您正在使用onclick
事件:
onclick
事件不监听滚轮点击。要解决此问题,只需使用 onmousedown
事件:
<button class="btn btn-dark" @onmousedown="OnClick">Test</button>
@code
private void OnClick()
NavigationManager.NavigateTo("/counter", true);
【讨论】:
以上是关于滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能的主要内容,如果未能解决你的问题,请参考以下文章
scrollIntoView() 不适用于水平滚动(Selenium)
平滑滚动不适用于 Android RecyclerView 的初始滚动