Blazor 服务器应用程序 $(document).ready() 等价物

标签 blazor blazor-server-side document-ready

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

最佳答案

OnAfterRender (使用 firstRender == true)正是您所需要的。直到整个内容在浏览器中呈现后才会触发。
但是,在您的页面创建后,内容将发生变化,因此将创建新组件并销毁现有组件。如果您的 jsfunction无论何时创建,都需要 Hook 页面上的每个组件,那么您的方法将不起作用。您还需要单个组件来覆盖 OnAfterRenderAsync并调用 jsfunction传递对自己的引用。

关于Blazor 服务器应用程序 $(document).ready() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64003275/

相关文章:

azure - AADSTS9002325 : Proof Key for Code Exchange is required for cross-origin authorization code redemption - Published on Azure

c# - 代码更改后如何在Blazor开发过程中刷新页面

c# - 如何在 Blazor 服务器应用程序的服务注册中将访问 token 注入(inject)到 HttpClient?

javascript - 无效的正则表达式标志 a

javascript - 在 document.ready 和 onClick 上运行函数

c# - 多对多 EF Core 关系 - 为什么它尝试将实体插入到不同的表中?

razor - 是否可以从 Razor/Blazor 组件中获取原始 HTML?

azure - 是否可以在 Blazor Server 应用程序中获取 Azure AD 用户信息

c# - Blazor 发布和响应 C#

PHP JQuery 文档准备好添加 IF 语句会中断 .show( )