首页 > 解决方案 > Blazor 服务器应用 $(document).ready() 等效项

问题描述

我有一个 Blazor Server 应用程序,我需要在加载文档时运行 js 函数 - 当我使用“静态”模式时,jQuery$(document).ready()工作正常,但我需要使用“ServerPrerendered”模式 - 当用户单击导航栏上的不同链接时, $(document).ready() 永远不会触发,因为 Blazor 使用 SingalR 更新内容。建议的方法是使用JSRuntime.InvokeVoidAsync("jsfunctiont")inside OnAfterRenderAsyncdefaultLayout.razor但问题是此事件发生在所有子组件完全呈现之前,因此我的 js 函数将失败。我的问题是在所有子组件完全渲染后调用js函数的方式是什么?这相当于$(document).ready()在 Blazor 服务器应用程序中使用“ServerPreRendered”模式?

太感谢了!

标签: blazorblazor-server-sidedocument-ready

解决方案


OnAfterRender(firstRender == true)是你需要的。直到在浏览器中呈现整个内容之后才会触发。

但是,在您的页面创建后,内容会发生变化,因此将创建新组件并销毁现有组件。如果您jsfunction需要挂钩页面上的每个组件,而不管它是何时创建的,那么您的方法将行不通。您需要各个组件也覆盖OnAfterRenderAsync并调用jsfunction传递对它们自己的引用。


推荐阅读