Blazor wasm - JSInterop errore alla prima esecuzione

di il
2 risposte

Blazor wasm - JSInterop errore alla prima esecuzione

ciao a tutti,

sto facendo i miei primi esperimenti con Blazor, spero qui sia il posto giusto...
sto provando cose facili e basiche, ma non trovo soluzione per un problema di utilizzo di JsInterop e codice js..

usando il progetto nuovo di "default" per blazor wasm (VS2022, target fwk 6.0), ho aggiunto un po' di rghe alla tabella in FetchData.razor al fine di vedere la VScroll bar...

Vorrei mettere uno sticky button per testare un "go top" via java script.. Ho aggiunto un file wwwroot\Scripts\myJs.js che scrive un semplice (vedi aspitalia.com/script/1418/Eseguire-Scroll-Interno-Pagina-Blazor.aspx)

function scrollToTop() {
document.documentElement.scrollTop = 0;
}

e l'ho referenziato in index.html,

<script src="_framework/blazor.webassembly.js"></script>
<script src="Scripts/myJs.js"></script>


il markup di FetchData.razor ora include la chamata JsInterop similarmente a

@page "/fetchdata"
@using BlazorApp5.Shared
@inject HttpClient Http
@inject IJSRuntime JSRuntime

...
<button @onclick="OnGoTopClick" type="button" class="btn-sm btn-group-sm" style="bottom:20px; right:20px; position:fixed; z-index:9000;">Go Top</button>

@code{
...
    private async void OnGoTopClick()
    {
        await JSRuntime.InvokeVoidAsync("scrollToTop");
    }
}

ma la chiamata fallisce sempre alla prima esecuzione, riportando l'eccezione Microsoft.JSInterop.JSException: Could not find 'scrollToTop' ('scrollToTop' was undefined).
Se faccio il reload della pagina, la chiamata alla funzione js avviene con successo...

quindi mi manca qualche cosa da qualche parte....

VS 2022, a .Net6 wasm prj

Avete qualche indicazione, per favore?

salutoni romagnoli
--
Andrea

2 Risposte

  • Re: Blazor wasm - JSInterop errore alla prima esecuzione

    Ciao

    Mi sembra strano come comportamento, soprattutto perche' ho eseguito i tuoi stessi passaggi e a me funziona sin da subito.

    Solo come prova, puoi sostituire il metodo di richiamo della scrollOnTop in questo modo?

        private void OnGoTopClick()
        {
            ((IJSInProcessRuntime)JSRuntime).InvokeVoid("scrollToTop");
        }
  • Re: Blazor wasm - JSInterop errore alla prima esecuzione

    Salve, 

    e grazie per l'interessamento….

    ho riprovato tutto “ex-novo”… e ora funziona… forse, come al solito, bastava solo un bel reboot … mia mamma me lo diceva sempre: “spegni e riaccendi” :D

    ora devo trovare un modo di mostrare il button solo in caso di presenza di scroll della window ed in caso di scroll > “x”, …

    cerchiamo un po'… se hai info in tal senso ti ringrazio… so che ci sono i componenti mudblazor gratuiti, ma io devo impratichirmi un po' con questo framework… :D

    salutoni romagnoli
    – 
    Andrea

Devi accedere o registrarti per scrivere nel forum
2 risposte