我目前正在开发一个托管/客户端 Blazor WebAssembly 应用程序,该应用程序在最初运行时运行良好。
在正在呈现的页面的“OnInitializedAsync”方法中是一个 javascript 调用,用于检索页面上 html 元素的宽度。如果我在 javascript 函数中设置断点,则在初始应用程序运行时,浏览器将显示呈现的页面并且元素属性被正确检索。但是,当我刷新浏览器页面时,当断点被击中时,浏览器还没有完成页面渲染,因此元素的宽度为零。
谁能告诉我这是为什么以及如何解决这个问题?
<div @ref="_carPanelWidth">
....
</div>
@code {
private ElementReference _carPanelWidth;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
var carPanelWidth = await JsRuntime.InvokeAsync<int>("utilityFunctions.getElementWidth", new object[] { _carPanelWidth });
StateHasChanged();
}
}
window.utilityFunctions = {
getElementWidth: function (element) {
return element.offsetWidth;
}
};