在 Blazor WASM 预呈现时,由于页面没有加载完全,无法访问 DOM 元素,这可能导致 Javascript 代码不起作用。
要解决这个问题,可以通过将 Javascript 代码放在一个函数中,在页面加载完成后调用该函数来执行该代码。以下是一个示例:
@page "/"
@using Microsoft.AspNetCore.Components.Web
@inject IJSRuntime JsRuntime
Hello, world!
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
// Execute JS code after the initial render
await JsRuntime.InvokeVoidAsync("initMap");
}
}
}
在这个示例中,我们使用 Google 地图的 Javascript API 在页面上显示一个地图。我们将 Javascript 代码放在 initMap()
函数中,并在页面加载完成后通过 OnAfterRenderAsync()
方法调用该函数,以确保页面完全加载。
在 OnAfterRenderAsync()
方法中,我们首先检查是否是第一次呈现,然后才调用 JsRuntime.InvokeVoidAsync()
方法来执行 initMap()
函数。
这样做可以确保 Javascript 代码只会在 Blazor WASM 页面完全加载后执行,并且可以正常工作。