Aspettare l'evento Change che finisca

di il
2 risposte

Aspettare l'evento Change che finisca

Ciao a tutti.
Ho una funzione in JavaScript che deve modificare dei campi e chiamare il relativo evento Change, ma prima di proseguire deve aspettare che l'evento abbia terminato il suo lavoro.
Una cosa del genere:

        (function() {
            document.getElementById('nome').setAttribute('value', 'Mio Nome');
            document.getElementById('nome').dispatchEvent(new Event('change', { 'bubbles': true })); 
            document.getElementById('cognome').setAttribute('value', 'Mio Cognome');
            document.getElementById('cognome').dispatchEvent(new Event('change', { 'bubbles': true })); 
            return -1;
        })();
io ho bisogno, una volta eseguito il dispatchEvent di aspettare che l'evento sia terminato prima di eseguire la riga successiva, come posso fare ??

Premetto che NON posso modificare il codice relativo dell'evento, ma solo la funzione che vi ho postato (che è ovviamente solo di esempio).
Ho dato un'occhio in giro, non so se la via giusta è definire questa funzione "async" e utilizzare al suo interno il "await" ma non avrei idea di come fare, il mio livello di JavaScript è abbastanza basso.
Grazie per l'aiuto.
Sergio

2 Risposte

  • Re: Aspettare l'evento Change che finisca

    SirJo ha scritto:


    Ho una funzione in JavaScript che deve modificare dei campi e chiamare il relativo evento Change, ma prima di proseguire deve aspettare che l'evento abbia terminato il suo lavoro.
    Che io sappia, l'uso della funzione dispachEvent() è sincrono, quindi il suo handler viene eseguito subito e non in modo asincrono, e la chiamata attende la fine dell'esecuzione prima di proseguire.

    In breve, tutto il tuo codice dovrebbe essere già sincrono.

    Trattandosi di una funzione immediata, non è chiaro lo scopo del return -1 finale.

    Io definirei meglio la problematica, perché in questi termini sono quasi sicuro di non aver compreso qualcosa.

    Ciao!
  • Re: Aspettare l'evento Change che finisca

    Ciao Alka e grazie della risposta.
    Quel "return -1" mi è solo scappato, in realtà è per un contesto più ampio.
    Come sai io lavoro principalmente in VB.NET e sto realizzando un programma che simula la navigazione automatica su un sito web per la compilazione di schermate senza l'intervento dell'utente.
    Utilizzo CefSharp che è simile al WebBrowser, e quindi sto facendo del JavaScript injection per poter accedere al DOM del browser e interagire con gli oggetti nella pagina HTML.
    Ero convinto che dispachEvent era asincrono, non so perchè, ma se davvero è sincrono mi risolve molti problemi.
    Il dubbio mi era venuto perchè, conclusa la routine "iniettata", se nel mio codice VB.NET faccio subito Exit Sub, nella schermata non vedo tutti i campi compilati.
    Se invece, prima di Exit Sub, gli metto un Thread.Sleep(1000) funziona tutto perfettamente e quindi ho pensato che in quel momento gli eventi Change ancora non avevano finito di fare quello che dovevano.
    Grazie mille ora ci studio sù e proseguo.
    Sergio

    Edit: curiosando su internet ho trovato un post dove dicono che dispachEvent è sincrono, ma che potrebbe essere il listener asincrono
Devi accedere o registrarti per scrivere nel forum
2 risposte