Вы можете использовать вызов JSInterop из метода OnAfterRenderAsyn c, например:
@page "/"
@inject IJSRuntime jsRuntime
<h1 id="myid" @ref=MyElementReference>Hello, world!</h1>
@code{
ElementReference MyElementReference;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JSRuntime.InvokeAsync<object>("MyJSMethods.myMethod", MyElementReference);
}
}
}
Примечание. Для выполнения вызовов JSInterop необходимо внедрить объект JSRuntime.
Вы должны вызвать свой код JavaScript после того, как ваши компоненты были обработаны. Метод OnAfterRenderAsyn c вызывается после визуализации компонента, и, таким образом, вы можете разместить здесь код для инициализации вашего компонента. Это должно быть, когда firstRender имеет значение true, и множественные вызовы ваших JavaScript объектов, когда firstRender - false.
Поместите сценарий в конец файла _Host.cs html, чуть ниже
<script src="_framework/blazor.server.js"></script>
<script>
window.MyJSMethods =
{
myMethod: function (element) {
window.alert(element.id);
}
};
</script>
Обратите внимание, что параметр с именем element , который принимает функция, является объектом-элементом, поскольку мы определили аргумент как ElementReference в Blazor. Конечно, вы могли бы передать идентификатор элемента.