Проблема с вызовом функции JS в приложении Blazor WebAssembly
Я пытаюсь выяснить, открыто ли моё приложение Blazor WebAssembly на мобильном устройстве. Поэтому я создал файл wwwroot/js/check-device.js с таким кодом:
function isMobile() {
return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(navigator.userAgent);
}
Я добавил ссылку на этот файл в index.html. В моем компоненте я использую следующий код:
@inject IJSRuntime JSRuntime
@code {
private string deviceInfo { get; set; }
private static bool isDeviceMobile { get; set; }
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
isDeviceMobile = await JSRuntime.InvokeAsync<bool>("isMobile");
deviceInfo = isDeviceMobile ? "Мобильное" : "Настольное";
}
await base.OnAfterRenderAsync(firstRender);
}
}
Я получаю ошибку компиляции: “No overload for method ‘InvokeAsync’ takes 1 arguments”. После этого я добавил второй параметр:
isDeviceMobile = await JSRuntime.InvokeAsync<bool>("isMobile", new object[] { });
Теперь возникает другая ошибка: “An object reference is required for the non-static field, method, or property ‘JSRuntime.InvokeAsync(string, object)’”. Как правильно вызвать JavaScript функцию из компонента Blazor?