Example 1
index.html
<script>
function renderjQueryComponents() {
alert('here');
// initialization of HSMegaMenu component
$('.js-mega-menu').HSMegaMenu({
event: 'hover',
pageContainer: $('.container'),
breakpoint: 991
});
// initialization of HSDropdown component
$.HSCore.components.HSDropdown.init($('[data-dropdown-target]'), {
afterOpen: function () {
$(this).find('input[type="search"]').focus();
}
});
}
</script>
Note:
Script tags should not be placed inside components because they cannot be updated dynamically. To fix this, move the script tag to the ‘index.html’ file or another static location.
MainLayout.razor
@inject IJSRuntime jsRuntime
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await jsRuntime.InvokeVoidAsync("renderjQueryComponents");
}
await base.OnAfterRenderAsync(firstRender);
}
}
or in the MainLayoutBase.cs
using Microsoft.JSInterop;
[Inject]
public IJSRuntime jsRuntime { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await jsRuntime.InvokeVoidAsync("renderjQueryComponents");
}
await base.OnAfterRenderAsync(firstRender);
}
Example 2
<script>
function clearSearchText() {
document.getElementById('txtSearchText').value = "";
}
</script>
public async Task SearchOnFocus()
{
await jsRuntime.InvokeAsync<object>("clearSearchText");
}
Sources:
https://www.syncfusion.com/faq/blazor/javascript-interop/is-there-a-way-to-access-dom-in-blazor
https://stackoverflow.com/questions/54274629/how-to-use-jquery-ui-from-blazor-component
Comments